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

That's not a pure microservices approach, since you are sharing state (the database). It means that any development which changes or is impacted by a change in the DB has to be coordinated between teams.

The microservice approach is to have each service have its own database (MySQL) or schema (PostgreSQL).

Another solution is the use of a modular architecture, where separate modules are each responsible for their database tables' schema. Tables are not shared across modules; accessing data from a table requires calling its module's API.

Each module can be developed independently, and combined into one large service or several smaller services. It's helpful to be able to separate modules into their own service for load balancing and optimization, while having all modules in the same service eases administration of the system.

From previous experience, you start by lumping all modules together, then use monitoring software (i.e. ELK stack, collectd/Grafana) you decide where to split into services. Because the reality is you'll not really know where to split until you are running in production.

This is the approach of Django for example and works quite well for large projects.




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

Search: