Modelling Top Surface
The idea is to isolate areas of topology where the interpolation of normals (used by smooth shading) might screw the illusion of a smooth surface from parts of the model where it matters - from places where curvature has to be kept even.

Either:


I inset the flat top region, and
CtrlR cut a loop around the neck and slide it
up towards the rim


Or: 


CtrlB Bevel the rim with (e.g.) 2 Segments and
a Profile of 1,which has the same effect.


Now the thin triangular faces are in a flat area, all have the same normals, so no interpolation

Or....

... you could do the bevel with a Bevel modifier, targeted by angle .. or edge Bevel Weight, so you can adjust the bevel later.. you could split the normals for shading alone without adding any geometry or subdivision, by going to the Data tab and checking 'Autosmooth' .. or..