Intensive one-day introduction to designing, developing and deploying microservices architecture
The development and maintenance of monoliths presents organizations with increasing challenges, resulting in high costs and a slow time-to-market. More and more organizations are therefore attempting to componentize their applications. The latest and greatest paradigm microservices finally seems to deliver on the promises of service oriented architecture: shortening time-to-market, scalability, autonomy, and exchangeability of technology and databases. The challenges of delivering microservices however are equally big. What makes a component a microservice? How to design, develop and deploy these small services? How does collaboration between analysts, developers, testers and operations change the organizations?
Are microservices software developments Swiss army knife?
During this one day course, from his years of experience in agile, Scrum, requirements, architecture and code Sander Hoogendoorn shares the voyage that implementing a microservices landscape is. He will answer questions on modeling and designing microservices, the granularity of applications and services, the communication between services, design patterns, polyglot persistence, testing services and setting up deployment pipelines. Richly illustrated with real-life examples, this course gives a perfect introduction into this promising technology.
Benefits of attending
- Get a clear understand of the strengths and weaknesses of using microservices
- Learn to understand which problems microservices can solve and which not
- Help you decide whether microservices will solve your current problems
- Learn how your software architecture will evolve when you move towards microservices and how to keep your architecture flexible
- Learn how to design and model applications, microservices and resources in this new architecture
- Get understanding of the more explicit role of testing in a microservices architecture, and which technique apply well
- Learn about continuous integration and continuous delivery, and how you design your deployment pipelines
Who should attend
- Managers who have clear issues with current applications, such as poor maintainability, long time-to-market, moving away from legacy code, and spaghetti architecture, and are considering microservices
- Managers who want to understand the challenges and opportunities microservices architectures
- Architects who want to define software architecture for successful microservices implementations
- IT professionals who want to understand who microservices will influence the existing infrastructure architecture
- Business and functional analysts who want to obtain an overview of the different design techniques used in microservices, or who want to understand who microservices will change their jobs
- Developers and testers who require an overview of all new technology, frameworks and tools that are used in microservices
- IT Managers and IT Strategists selecting new technologies
- IT Architects and Managers who need to develop an integration strategy for their company
- Consultants who need to recommend different strategies for implementing integration scenario’s
An introduction to components and services
- Monoliths versus microservices
- Strengths and weaknesses of monolithic software
- A brief history of components and services
- Are we beyond the hype yet?
- A definition of microservices
- Characteristics of microservices
- Containers and scalability
- Polyglot persistence
- Promises of microservices
- Challenges in microservices
- How big or small are microservices?
Greenfield or brownfield?
Presenting two real world cases
- Guiding principles from both cases
- A business process first approach
- Different levels of business processes
- An architecture first approach
- How to split up your existing code base?
- Brownfield migration to microservices
Evolutionary software architecture
- Where to start?
- Introducing design patterns
- Applications, workers and services
- Service consuming applications
- Service delivering components
- Dealing with communication and REST
- Authentication and tokens
Designing and building microservices
- Why modular design is key
- Guidelines for design microservices
- The Single Responsibility Principle (SRP)
- Introducing domain driven design
- Explaining bounded contexts
- Modeling micro-applications
- Smart use cases
- Mapping bounded contexts around resources
- Working with HTTP verbs
- Creating a RESTful API for you services
- Explaining Postel’s law
- Introducing the resource model
- An overview of test techniques for microservices
- Why manual testing isn’t efficient
- Unit testing
- Behavior driven design with examples
- Introducing service contracts
- QA (with SonarQube)
- Integration testing
- Acceptance testing
- When to test what in your deployment pipelines
Deployment of microservices
- Continuous integration
- Designing your deployment pipelines
- Moving towards continuous delivery
- Minimal viable products (MVP)
- Agile, Kanban and microservices
- Microservices and DevOps
- Do microservices change your organization?
- Some final recommendations
- Do microservices solve all challenges your IT department has?
- How to proceed?