Image-empty-state.png

Nick Kobishev

Similarweb

Nick Kobishev is a Principal Engineer@Similarweb by day and dog dad by night (and any other time). He has 6 years of experience in software engineering and messing about with Big Data. Loves dealing with data at scale, enabling other engineers to achieve their goals, and anything to do with optimizing systems to get the most bang for your buck. He’s an occasional tech blogger and public speaker.

A case of (over)optimization

I’ll review multiple ways you can optimize your Go services by telling the story of how I wrote a highly performant Go service. Starting with an extremely inefficient Node.js service, being analyzed and rewritten in Go. Said Go service being iteratively optimized until there’s no more unutilized throughput left in it.

What went right and what could have gone wrong have I been less lucky. Lessons learned and trade-offs that should be considered when optimizing your services. What works best for CPU intensive workloads and what does for IO intensive ones.

Concluding with perhaps the most important point: when should you stop before you end up overdoing it. That is, barely getting results for the time you sank into your optimization “adventure”.