Duration
2 days
Synopsis
The advent of reactive microservice architectures and the popularity of functional programming in recent years has prompted many companies to reconsider their traditional n-tier architectures. While traditional architectures served them well in the past, scalability, availability, and performance have become more of a concern to many organizations seeking to meet the ever-growing demands of their customers. To accomplish their goals, companies must also incorporate NoSQL and Agile DevOps into their architectures, resulting in a holistic solution that emphasizes automation and scalability.
Learning Objectives
- Understanding reactive microservices
- Agile DevOps using Ansible, Vagrant, and Docker
- Developing a simple microservice application in Play or ACT framework
- Securing microservices, encrypting data at rest, and using PKI/HMAC
- Distributed caching and making full use of the HTTP protocol (CORS, HTTP/2, HSTS, Public key pinning)
- Common practices/Best Practices for Microservices
- Future of web development with web components and isomorphic JS
- SaaS and multi-tenancy in microservices
- Testing microservices
Prerequisite
- Some programming knowledge in an imperative or functional programming language such as Java, .NET, PHP, etc.
- Some background in software architecture
Suggested Audience
- Developers
- Solution Architects
- Software Architects
Day 1
What are microservices? (60 min)
- Microservice architecture
- Reactive Manifesto
- History of Web architectures (N-tier, SOA, etc)
Building an architecture from scratch (30 min)
- Stakeholder map
- Business goals
Business Processes and Value Streams (60 min)
- Business Process Mapping
- Value Stream Mapping
- Identify atomic processes
- Define methods
Automate to reduce cycle time and increase value-added activities (60 min)
- Brainstorming automation
- Choosing the right technology stack
- Forming teams
- Consumer-driven contracts and Dependencies
- Interface boundaries and DDD (Domain-Driven Design)
Defining Domains and Resources (60 min)
- Create a domain resource map
- Specify size of resources and which persistence store they belong to
- Document using Swagger
Creating an API – Defining routes and methods (30 min)
- API best practices and conventions
- CORS
Creating an API – Data formats (30 min)
- HTTP/REST/JSON
Hands-on Exercise (45 min)
- Participants will be asked to create a stakeholder map
- Participants will be asked to create a business process and value stream
- Participants will be asked to identify domains and resources for their business process
Day 2
What is DevOps? (60 min)
- CI/CD
- Versioning
- Deployment
Agile DevOps (30 min)
- Functional Testing
- Stress/Load Testing
- Security/Penetration Testing
Using DevOps Tools (120 min)
- Vagrant
- Ansible
- Docker and Containers
Hands-On Excercise (60 min)
- Participants will be asked to create a Vagrant box
- Participants will be asked to create a simple Ansible playbook
- Participants will be asked to create a docker image
What is Cloud Computing? (30 min)
- Virtualized instances
- Microservices in the cloud
Using Cloud Computing (30 min)
- Introduction to AWS, GCP, and Azure
- Sample VPC in AWS
Hands-on Exercise (45 min)
- Participants will be asked to create an AWS account
- Participants will be asked to create a VPC
- Participants will be asked to create an EC2 instance
Day 3
Securing microservices (30 min)
Introduction to Encryption (60 min)
- One way encryption – hashing and HMAC
- Two-way symmetric encryption - AES
- Two-way asymmetric encryption – RSA and PKI
- Use cases
Caching and Protocols (60 min)
- Client-side and Server-side caching
- HTTP protocol – Request and Response Headers
- HTTP/2 and Pipelining
SaaS and Multi-tenancy (60 min)
Hands-On Excercise (60 min)
- Participants will be asked which encryption they use
- Participants will be asked to specify their caching strategies
- Participants will be asked to specify what request and response headers they generate
Testing Microservices (60 min)
- Unit, integration, component, contract, and end-to-end testing
- DDD (Domain Driven Development) Test pyramid
Hands-on Exercise (45 min)
- Participants will be asked to create a web component
Programme scope, delivery arrangements and suitability are confirmed during enquiry.