Ryan has been designing and implementing technological solutions in various industries for over 13 years. Over the past decade, he has been a part of helping a number of companies venture into the digital realm and implement policies that allow for vast creativity and innovation to occur. He has built many platforms that utilize state-of-the-art technology in order to gain a competitive edge and created tools that help businesses achieve their goals. Ryan currently works at RevPoint Media developing www.jangl.com
Assuming that you already know how to build a monolithic app, you must be wondering how you can use all this "microservice" stuff that you keep hearing about. Well, a good word of advice is that you probably don't need it. If designed properly, a monolithic app should be able to scale and fit the needs of most businesses. Even so, you should keep your development as simple as possible until you have proven and solidified your business concepts. But if you do need to grow to Internet scale, then you have a long road ahead of you.
Moving from a monolithic application to microservices is a natural evolution that is often of necessity. There are several competing schools of thought that are still being battle-tested in these early days of microservice architecture. Among all the competing paradigms, most of the requirements can be agreed upon, but are mostly differentiated by the tools used to fulfill the requirements.
This talk will cover setting up the required infrastructure, and demonstrate how to migrate a sample monolithic Django application into a microservices platform.
The demo application will use the following technologies: Django, Flask, Fabric, Terraform, Ansible, CentOS, Docker, Mesos, Consul, Nginx, Pgbouncer, Kafka
(1) Who is this talk for? (2) What background knowledge or experience do you expect the audience to have? (3) What do you expect the audience to learn or do after watching the talk?
This talk is for developers that have completed a web application and are looking for a roadmap to evolve and scale rapidly. This talk assumes that the developer is beyond the proof-of-concept phase, and is looking to prepare for growth and innovation.
Understanding of a Python web framework (Django, Flask, etc...) required. Medium Python experience.
The audience should gain an understanding of how to evaluate and tailor the available microservice toolsets to meet their needs and business objectives. They should be able to set up and run a sample microservice application with the demo code provided.
-
Breaking up the Monolith (3 mins)
- Analyze data flow
- Divide application into logical services
- Leave business logic intact
- Prioritize obvious services (accounts, billing, location, etc.)
-
Building a Migration Roadmap (2 mins)
- Evaluate different tools
- Use solutions that best meet your needs
- Plan to keep downstream apps working
-
Services and API Design (5 mins)
- Synchronous and asynchronous messaging
- Clear separation of responsibilities
- Use 12factor as a guide, not as dogma
-
Separating Data Stores (2 mins)
- Any data store should be accessed by no more than one service
- Ensure foreign key structures will work in a separate database
-
Microservices Toolset Creation (5 mins)
- Build a shared toolset to easily communicate between applications
- Automate common tasks in all services
- Generate configuration settings with minimum setup
-
DevOps and Infrastructure Design (3 mins)
- Configuration-based infrastructure
- Automated and minimal-effort deployments
-
Logging and Analytics (2 mins)
- Centralize logs from all systems
- Run analytic utilities on log data
-
Demo Overview (5 mins)
- Run a microservices infrastructure on a Vagrant box
- Deploy and run a demo application
- Monitor analytics in Kibana
As CTO of RevPoint Media, I have just completed this process and led the transition covered in this talk over the past 2 years.
A 10 minute version of this talk was given during the lightning talks of PyGotham 2015.
I also gave a talk at DefCon 17 (2009) demoing an intro to Hadoop.