4. Issues monolithic
applications
• Complexity
• Hard deploy
• Hard use new tools (DB, languages, etc.)
• Scale team size
• Changes are typically expensive
5. What is it SOA?
• A modular style to software development
is based on the use of distributed, loosely
coupled, replaceable components.
• The fundamental concept of an SOA is that
each component of the system is broken
up into network-accessible services, which
are integrated to make a functioning
application.
6. Rails application with
multiple services
End user
High level domain logic
Service 1 Service 2 Service N
Domain logic Domain logic Domain logic
Database Database Database
10. Robustness
• Implementation can be changed without
the API consumer’s knowledge.
• Example: Changing libraries, database or
even languages.
11. Scalability
• Easy to scale portions of application
individually.
• Can be handled on a case-by-case instead
of requiring optimization of a single
database for all cases.
• Easier to scale team size.
12. Agility
• New services can be implemented outside
the full architecture.
• Service interface should be versioned.
“/api/v1/users/:id”
• Design includes the ability to run multiple
versions of a service simultaneously.
“/api/v1/users/:id” and “/api/v2/users/:id”
13. Interoperability
• Prevents being tied to a specific
implementation.
• Services ease interoperation with internal
and external systems and with systems
written in languages other than Ruby.
14. Reuse
• Service-oriented design enables reuse of
components across multiple applications or
clients.
• If services are created for internal use, they
can be exposed later to the public.
15. Converting to Services
• Partitioning on Iteration Speed
• Partitioning on Logical Function
• Partitioning on Read/Write Frequencies
• Partitioning on Join Frequency
16. What we need to learn
• RESTful-Oriented • Create clients
Architecture
• Testing and Mocking
• HTTP Methods Service Calls
• HTTP Caching • Load Balancing
• MIME types • Security
• I/O, Threading, and • Web Hooks
Parallelism
• Chef
• Amazon AWS
• Typhoeus