Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
RubyConf AU 2015: http://www.rubyconf.org.au You've learned about Service Oriented Architecture. You want to use it. You know the benefits to testing speeds, to team velocity, and page load (why do in sequence what can be done in parallel?). Problem is, you're tearing your hair out trying to figure out how to actually pull those services out of your monorail. This isn't about the metrics to determine what should be pulled out into a service. This talk isn't even about optimizing the service you pull out. This talk is a step-by-step approach about how to successfully pull a service out of an existing app and optimizing its performance.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In her talk at RubyConf AU 2015, Lauren Voswinkel explores the process of building a Service Oriented Architecture (SOA) by extracting services from existing monolithic applications, particularly focusing on Ruby on Rails. Voswinkel emphasizes the importance of understanding the nature of services, defined as loosely coupled, self-contained units that offer specific functionalities. She outlines the numerous benefits of adopting SOA, which include: - **Asynchronous Processing:** Services can handle tasks in the background, allowing other processes to continue running without delays. - **Parallel Requests:** Multiple requests can be made simultaneously, significantly reducing wait times compared to sequential requests. - **Loose Coupling:** Changes within a service do not disrupt other components in the application, leading to more manageable code and faster testing. - **Improved Testing Efficiency:** Tests can be more focused and run individually, decreasing overall testing time from potentially 30 minutes to just 5 minutes for specific services. - **Increased Development Velocity:** Services can enhance response times and optimize workflows. To illustrate SOA implementation, Voswinkel shares a case study from LivingSocial where her team developed a new API for payment processing. This decision was driven by the need for accurate and timely billing information. Some key steps she discusses include: - **Defining Service Responsibilities:** Focus on a specific task for each service, and design appropriate endpoints that will perform the necessary functions. - **Utilizing Active Model Serializers:** This gem helps manage the data exposed through a service, preventing potential data overload or confusion. - **Creating Client Models:** Essential for parsing service responses, these models allow for structured, user-friendly data handling rather than raw JSON outputs. - **Establishing a Communication Layer:** Recommendations on using gems like HTTParty and Typhus are made to facilitate effective communication between clients and services, with an emphasis on wrapping these gems to manage internal API changes seamlessly. Furthermore, Voswinkel advises on how to completely separate the service from the main application, cautioning against common pitfalls such as database dependencies and timeout issues during extraction. - **Performance Optimization:** Tools like StackProf are recommended to profile and improve service performance effectively. The extraction concludes by carefully transitioning the new service out of the existing application, ensuring all related components are appropriately reorganized into a new repository, inclusive of tests and functionalities. In summary, Voswinkel's presentation delivers a step-by-step guide on pulling services out of existing applications, emphasizing careful planning, testing, and optimization to maximize the benefits of adopting SOA.
Suggest modifications
Cancel