Hacker News new | past | comments | ask | show | jobs | submit login

Yes. A lot of success. And with only one person on the backend full time.

That said, in places where it doesn't make sense we didn't try to force it. Our main game API is somewhat monolithic, but behind it we have almost 10 other services. Here's a quick breakdown:

  - Turn based API service (largest, "monolithic")
  - Real-time API service (about 50% the size of turn-based)
  - config service (serves configuration settings to clients for game balancing)
  - ad waterfall service (dynamic waterfall, no actual ads)
  - push notification service 
  - analytics collection service (mostly a fast collector that dumps into Big Query)
  - Open graph service (for rich sharing)
  - push maintenance service (executes token management based on GCM/APNS feedback)
  - help desk form service (simple front-end to help desk)
  - service update service (monitors CI for new binaries, updates services on the fly - made easy by Go binary deployment from CI to S3)
  - service ping service (monitors all service health, responds to ELB pings)
  - Facebook web front-end service (just serves WebGL version of our game binary for play on Facebook)
  - NATS.io for all IPC between services
...and a few more in the works. Some of these might push the line of "micro" in that they almost all do more than a single function's worth of work, but that level of granularity isn't practical.

But don't get too caught up on the "micro" part. Split services where domain lines naturally form, and don't constrain service size by arbitrary definitions. You know, right tool for the job and whatnot.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: