This talk is intended for anyone interested in deploying microservices in their environment. It examines what is involved in developing, deploying and maintaining a distributed microservices architecture. Moving from a monolithic architecture to a services oriented architecture has many benefits and tradeoffs that need to be addressed.
One has to consider whether to go with an off the shelf solution or build your own. When does it make sense to do the latter? Tasks like monitoring and debugging is more difficult with the added complexity that is inherent with a distributed system.
This first part of the talk reviews what needs to be considered when deciding to build applications on a distributed microservices architecture. Topics that will be covered include:
Why choose a microservices architecture, and when not to?
Objectives of a distributed services architecture
Service presence
Heartbeating
Logging
Security
Reliability>
Performance and Scalability
Monitoring
Troubleshooting
Message contracts
The second part of the talk delves into the micorservices framework built and used by CareerJunction. It is an in house framework written in Python 3 (3.5+) which uses asyncio for nonblocking I/O and ZeroMQ as a concurrency networking library.
In simple terms, the framework implements a reliable service-oriented request-reply dialog between a set of client applications, a set of brokers and a set of worker applications.
The features of the framework include those discussed in the first part of the talk and will be showcased by coding and deploying a service. Above and beyond that, the following topics will be covered:
Conceptual architecture
Architecture goals
Coding a service
Creating and running a service
Message contract parameters
Exposing services via HTTP
Scheduled Jobs
The last part of the talk examines the lessons learnt over the past few years, what to avoid and the benefits it brought not only to the IT team, but to the business as a whole.
Topics that will be covered include:
IT benefits
Business benefits
What to avoid?