How could I instance on the normal of a surface without using colliders?

I want to instance on a object surface, I have the point on the surface I want to spawn, I just need to get the normal so I can add the instancing objects scale to spawn the object properly on the surface.

void SpawnObject(GameObject go, GameObject ogo)
     //Get the normal position on go. 
     //Add the scale of ogo scale to the normal pos

Odds are a collider is going to be much faster for this (because it is highly optimized), but what you would need to do is access the object’s mesh, iterate through all triangles until you find the one you are closest to, then you would need to calculate the surface normal from the triangle indexes by averaging the normals of the vertices involved.

If your mesh is small enough, and you are not doing this every frame, it should be ok. Then again, if your mesh is small enough, baking a mesh collider and just using that would be faster overall.

The ting that confuses me about your question is using the normal to scale the object? A normal is a direction.