Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
This video was recorded on http://wrocloverb.com. You should follow us at https://twitter.com/wrocloverb. See you next year! Jan Stępień with MIGRATING TO CLOJURE. SO MUCH FN. Migrating a technology stack to a new language is rarely a simple task. It's getting even more challenging when what is changed is not only the language but the whole paradigm. This talk covers a story of stylefruits, where we've been gradually replacing a Ruby-based technology stack serving five million monthly visitors with Clojure. What are the costs and benefits of such a transition? How to make the migration gradual and painless? How to make Ruby and Clojure work with each other on the way? How easy is it to switch from a dynamic, object-oriented language to a functional one based on immutability and laziness? These are just some takeaways from this straight-from-the-trenches report.
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 this talk, Jan Stępień from stylefruits discusses the migration of their technology stack from Ruby on Rails to Clojure, highlighting the complexities involved in such a transition. Key Points Discussed: - **Background of stylefruits**: An online fashion and interior design hub that serves five million monthly visitors across several European countries, originally built entirely on Ruby on Rails. - **Initial Challenges**: The company faced problems with its monolithic application built in Ruby, which resulted in poor separation of concerns and increasingly painful scaling issues. - **Introduction of Clojure**: An engineer proposed using Clojure for a new project, which led to initial skepticism but eventually demonstrated Clojure's viability due to its successful deployment. - **Architecture Shift**: The team implemented a feature freeze to rework the application architecture gradually. They initially aimed for a hybrid system, running Clojure alongside Ruby, which required tackling data access complexities. - **Key Concepts of Clojure**: Jan emphasized the importance of immutability in Clojure, explaining how it simplifies data handling and application state management through the use of widgets—self-contained components with separated concerns. - **Template Management**: The Enlive library was introduced as a solution to their previous templating issues, allowing team members to work in HTML without the complexity of templating languages. - **Development Benefits**: Clojure's REPL over TCP/IP greatly enhances developer productivity, allowing real-time code changes and inspection directly in a live environment, something that greatly benefited their development process. - **Community Support**: Jan praised the Clojure community for its professionalism and the availability of quality libraries, albeit noting that hiring Clojure developers can be challenging but attracts curious candidates eager to learn. - **Future Vision**: He expressed aspirations to develop a more microservices-oriented architecture by continuing to refine their existing codebase and progressively decoupling functions from the legacy Ruby system. Conclusions: - The transition to Clojure has generally been rewarding for stylefruits, providing a distraction-free environment conducive to development. While challenges remain, including performance considerations and technical debt, the process has been manageable and positively transformative. - Jan encourages other organizations to consider Clojure for similar migrations, citing its benefits in performance and development experience. Throughout the talk, Jan stresses the importance of gradual migration, careful planning, and the upsides of having a supportive programming community. Questions about productivity comparison with Ruby and technical nuances reveal the ongoing learning involved in such migrations.
Suggest modifications
Cancel