< Back
Page 4 of 4
This chapter is from the book
Conclusion
Hopefully, this introduction has whetted your appetite for exploring the service-oriented approach covered in this book. The extra design work and communication overhead of creating and using multiple services takes a little more effort than creating a typical Rails application. However, the benefits of a service-oriented design can far outweigh the costs associated with inter service communication and more up-front design.
Here's a quick recap of the benefits of service-oriented design:
- Isolation—Robustness, scalability, and improved testing strategies all stem from the concept of isolation. Isolation gives an application architecture many of the advantages that encapsulation provides in object-oriented design.
- Robustness—Services are robust because their underlying implementation can change with shifting load requirements, libraries, and languages without detriment to the rest of the application.
- Scalability—When using services, you need to think up front about how to separate data and manage interaction. This partitioning of logic and data provides the ability to scale the size of the code base and team in addition to the number of requests to process.
- Agility—Upgrades to underlying system components are easier with services. Further, new versions of existing services and completely new services can be implemented outside the full architecture. This can provide much-needed agility for mature code bases where changes are typically expensive to verify with the rest of an app.
- Interoperability—Using HTTP-based services is a great way to expose the functionality of legacy applications or external vendors.
- Reuse—Service-oriented design enables reuse of components across multiple applications or clients.
< Back
Page 4 of 4