primary guideline would be don't even consider microservices unless you have a system that's too complex to manage as a monolith. The majority of software systems should be built as a single monolithic application. Do pay attention to good modularity within that monolith, but don't try to separate it into separate services."
to gure out how to migrate. ... if you take that company's solution, it's their solution to their problem. ... at amazon, the service orientated architecture took ve or six years. ... every one of those things took that long to go from an idea to actually developed at scale. ... and if you think you can do it in 5 months, you're crazy. Ain't gonna happen."
a small team of top developers, building features and microservices for our online platform. We are in an early stage of the development Several years of experience working with JS/Node.js, PHP, or Python How about experience in building distributed systems?
looking for one more Agile software development — SCRUM Docker — Kubernetes — Microservices Three monitors for every developer! Do I want or need three monitors to build the system?
have a new silver bullet — This time it's Microservices Managers happily pick up the good news — expect quicker development, delivery and value creation Many organisations jump on the train — often ill prepared And by introducing these boundaries so early, teams may loose TODO... I fear that this is as wrong and harmful as any silver bullet previously seen in IT
always have that — part of human nature? Keep talking about it, sharing what we know with co-workers and management — such as here today and every day at our work place. Maybe we can still get more value from the monolithic approach.
Share nothing architecture Actor Model: Communication only through message passing Let it crash: Fault tolerance through supervision trees Good skills?
cd abc/apps $ mix new a $ mix new b --sup $ mix new c --sup Deployments: All, some or one app per node Location transparency: Works in one node → Will also work in distributed mode Supervision trees often represent bounded contexts
(messaging) and con guration (separate databases) A single repository and monolithic deployment option, plus... ...any combination of apps can be deployed per node If and when the need arises: Separate along apps and supervisors
is complex and you create hard to change boundaries. Testing the system as a whole is di cult. Team skills will outweigh architectural style! Consider Erlang and Elixir :-)
of Software Engineering • Mary Poppendieck The True story about why we invented Erlang and A few things you don’t want to tell your Manager • Mike Williams AXD 301 • Ericsson Review No. 1, 1998 Erlang's nine nines Joe Armstrong's PhD thesis on the creation of Erlang
Badar • PREMATURE MICROSERVICES Fred Hébert • Learn You Some Erlang for Great Good! Eric Entin • pg2 and You: Getting Distributed with Elixir Erlang: The Movie