Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Building services and integrating them into Rails is hard. We want smaller Rails apps and nicely encapsulated services, but services introduce complexity. If you go overboard in the beginning, you're doing extra work and getting some of it wrong. If you wait too long, you've got a mess. At Yammer, we constantly clean up the mess that worked well in the early days, but has become troublesome to maintain and scale. We pull things out of the core Rails app, stand them up on their own, and make sure they work well and are fast. With 20+ services, we've learned some lessons along the way. Services that seem clean in the beginning can turn into development environment nightmares. Temporary double-dispatching solutions turn into developer confusion. Monitoring one app turns into monitoring a suite of apps and handling failure between them. This talk looks at our mistakes and solutions, the tradeoffs, and how we're able to keep moving quickly. Having services and a smaller Rails codebase makes for scalable development teams, happier engineers, and predictable production environments. Getting there is full of hard decisions -- sometimes we get it right, sometimes we get it wrong, but we usually have a story to tell. Help us caption & translate this video! http://amara.org/v/FGaQ/
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 the video titled **"Services and Rails: The Sh*t They Don't Tell You,"** Brian Morton discusses the complexities involved in building services and integrating them into Rails applications, sharing insights from his experience at Yammer. The presentation highlights the challenges of transitioning from a monolithic Rails app to a service-oriented architecture (SOA), detailing both lessons learned and strategies employed by the team at Yammer. **Key Points Discussed:** - **Foundational Concepts:** - Building services alongside Rails is crucial for scaling, but introduces significant complexity. Early-stage startups may find such structures overly cumbersome, prioritizing speed and simpler architecture initially. - The growth of Yammer resulted in a large Rails app hosting numerous services, requiring the team to address both scalability and maintenance challenges. - **Architecture and Scalability:** - Morton emphasizes the benefits of SOA, specifically that it allows various components to scale independently and facilitates easier deployment. - Example: Yammer has successfully created an indexing service and a denormalized data store that supports efficient search functionalities, illustrating how isolated services improve performance without burdening the monolith. - **Development Organization:** - Discusses the importance of the organizational structure in coding practices, referencing Conway's Law, which suggests that software design reflects communication structures within teams. - The transition to cross-functional teams helped break down silos, enabling better coordination and faster development of new features while ensuring that employees learn varied domains. - **Challenges in Transition:** - Morton details the complexities of managing deployments and data redundancy as services are extracted from the Rails app. Significant issues like tracking data consistency and managing duplicated data arise when transitioning responsibilities from the Rails codebase to individual services. - He recognizes that transitioning will invariably lead to mistakes and suggests embracing errors as part of the learning process. - **Key Takeaways:** - The need for a robust deployment and monitoring strategy is paramount to avoid overwhelming developers and ensuring service performance remains optimal. - A culture of continuous learning and readiness to adapt ensures that technical teams can iterate on their past decisions as needs evolve. - Ultimately, successful scaling involves not just technical adjustments, but also a supportive organization that fosters communication and flexibility amidst change. In conclusion, Morton’s talk provides a candid overview of the pitfalls and successes faced while navigating the transition to services within a Rails environment. The insights shared underscore the importance of thoughtful planning, organizational structure, and culture in developing scalable software solutions.
Suggest modifications
Cancel