Question: summary Case Study Evolutionary Architecture at Amazon ( 2 0 0 2 ) One of the most studied architecture transformations occurred at Amazon. In an
summary Case Study Evolutionary Architecture at Amazon
One of the most studied architecture transformations occurred at Amazon. In an interview with ACM Turing Awardwinner and Microsoft Technical Fellow Jim Gray, Amazon CTO Werner Vogels explains that Amazon.com started in as a monolithic application, running on a web server, talking to a database on the back end. This application, dubbed Obidos, evolved to hold all the business logic, all the display logic, and all the functionality that Amazon eventually became famous for: similarities, recommendations, Listmania, reviews, etc.
As time went by Obidos grew too tangled with complex sharing relationships meaning individual pieces could not be scaled as needed. Vogels tells Gray that this meant many things that you would like to see happening in a good software environment couldnt be done anymore; there were many complex pieces of software combined into a single system. It couldnt evolve anymore.
Describing the thought process behind the new desired architecture, he tells Gray, We went through a period of serious introspection and concluded that a serviceoriented architecture would give us the level of isolation that would allow us to build many software components rapidly and independently.
Vogels notes, The big architectural change that Amazon went through in the past five years from was to move from a twotier monolith to a fullydistributed, decentralized, services platform serving many different applications. A lot of innovation was necessary to make this happen, as we were one of the first to take this approach. The lessons from Vogels experience at Amazon that are important to our understanding of architecture shifts include the following:
Lesson : When applied rigorously, strict service orientation is an excellent technique to achieve isolation; you achieve a level of ownership and control that was not seen before.
Lesson : Prohibiting direct database access by clients makes performing scaling and reliability improvements to your service state possible without involving your clients.
Lesson : Development and operational process greatly benefits from switching to serviceorientation. The services model has been a key enabler in creating teams that can innovate quickly with a strong customer focus. Each service has a team associated with it and that team is completely responsible for the servicefrom scoping out the functionality to architecting, building, and operating it
The extent to which applying these lessons enhances developer productivity and reliability is breathtaking. In Amazon was performing approximately fifteen thousands deployments per day. By they were performing nearly deployments per day.
USE THE STRANGLER APPLICATION PATTERN TO SAFELY EVOLVE OUR ENTERPRISE ARCHITECTURE
The term strangler application was coined by Martin Fowler in after he was inspired by seeing massive strangler vines during a trip to Australia, writing, They seed in the upper branches of a fig tree and gradually work their way down the tree until they root in the soil. Over many years they grow into fantastic and beautiful shapes, meanwhile strangling and killing the tree that was their host.
If we have determined that our current architecture is too tightlycoupled, we can start safely decoupling parts of the functionality from our existing architecture. By doing this, we enable teams supporting the decoupled functionality to independently develop, test, and deploy their code into production with autonomy and safety, and reduce architectural entropy
As described earlier, the strangler application pattern involves placing existing functionality behind an API, where it remains unchanged, and implementing new functionality using our desired architecture, making calls to the old system when necessary. When we implement strangler applications, we seek to access all services through versioned APIs, also called versioned services or immutable services.
Versioned APIs enable us to modify the service without impacting the callers, which allows the system to be more looselycoupledif we need to modify the arguments, we create a new API version and migrate teams who depend on our service to the new version. After all, we are not achieving our rearchitecting goals if we allow our new strangler application to get tightlycoupled into other services eg connecting directly to another services database
If the services we call do not have cleanlydefined APIs, we should build them or at least hide the complexity of communicating with such systems within a client library that has a cleanly defined API.
By repeatedly decoupling functionality from our existing tightlycoupled system, we move our work into a safe and vibrant ecosystem where developers can be far more productive resulting in the legacy application shrinking in functionality. It might even disappear enti
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
