Curso MicroServices
48 horasVisão Geral
Curso MicroServices, MicroServices é uma variante do estilo arquitetônico de arquitetura orientada a serviços (SOA) que define o aplicativo como uma composição de pequenos serviços e unidades fracamente acoplados. Em MicroServices, serviços refinados são suportados por protocolos leves. Este Curso MicroServices, de arquitetura e implantação de microsserviços apresenta a arquitetura genérica de microsserviços com padrões e os cenários de implantação no cluster Kubernetes com mecanismo de contêiner docker em ambiente de rede distribuído.
Pre-Requisitos
- Experiência em desenvolvimento de aplicações web. Ter exposição ao desenvolvimento de serviços SOAP e REST e integração contínua com gerenciamento de entrega contínua é o preferido
Materiais
Inglês + Exercícios + Lab PraticoConteúdo Programatico
SOA and Web services Overview
- SOA overview
- The need of SOA in the Enterprise
- Applications as service
- Soap Web services with XML
- SOAP,WSDL and dependencies
- SOAP services limitations
- Interoperability issues
- Heavyweight architecture
- Performance and integration issues
- Porting/migration issues
- Tight coupling with the platform
REST API applications
- The REST style of applications
- Using the HTTP protocol
- The unique resource URL as REST Noun
- The resource operations with HTTP Methods as verbs
- Models and Persistent Entities
- Define data formats for exchange
- Reuse and Linking the services
MicroServices Introduction
- Why MicroServices
- Monolith vs. MicroServices
- Decomposing into smaller service units
- Advantages
- Loose coupling
- Isolated development and isolated testing
- Performance enhancement and maintainability
- Scaling the services with ease
Generic discussion on MicroServices architecture and patterns
- Common Design Patterns overview
- Singleton
- Observer
- Mediator
- Bridge
- Session facade
- Chain of Responsibility
- SOLID Principles overview
- Modeling and Domain Driven Design
Architecture style and patterns
- API Gateway
- Circuit Breaker
- Service Discovery
- Self Registration
- Third Party Registration
- Event Driven Architecture
- Event Sourcing and collaboration
- Command Query Responsibility Segregation
- Sync vs. Async processing
- Reactive Microservices
- Shared Database
Asynchronous Request processing
- Message brokers
- Point to Point
- Publish - Subscribe
- Message Brokers
- AMQP
- STOMP
Deployment Scenarios overview
- Service instance per host
- Multiple service instances per host
- Scaling the instances
- Shared Database
- Database per Service
- Application events and logging
Application Deployments
- Applications in Enterprise
- Development and Deployment platforms
- Manage deployment across platforms
- Application dependencies
- Making it highly available with clustering
- Scaling for performance
- Load balancing and instance management with orchestration
- Deployment monitoring and instance management
- The need of VM
- Deployment in Virtual Machine environment
- The Virtual MC usage and limitations>
- The container deployment
- The container as isolated process
- The container vs. virtual machine
- The networking with containers
- Security in container applications
Starting with Docker Container
- Docker architecture
- Docker containers for application deployment
- Docker daemon and docker client
- Installing the Docker for Windows and Linux
- Docker commands overview
- Docker container and image
- Docker Hub registry for images
- Create and run first Docker container
- Access the docker container from the host system
- The host network mapping
- Port forwarding
- Inspect docker process and containers
- Inspect container logs
- Interactive and detached containers
- Start, Stop and remove containers
- Manage the docker images
- Pull more docker images from Docker Hub
- Docker container monitoring
Build docker container images
- Design MicroService image with Dockerfile
- The Dockerfile grammar
- Build and run the image
- The Docker Hub user with repository
- Push the docker images to Docker Hub
- Run database container
- Copy files/dirs from container to host and vice versa
- Connect to database container via terminal
- Manage the data in database
- Commit the modified container as image
- Update Docker container images
- Work with local Docker Registry
- Clean the docker environment
Docker container networking
- Docker networks
- Host network mapping
- Host Port Mapping
- Dynamic port mapping
- Default bridge network
- The overlay network used in cluster
- Linking the containers
- Use of Nginx for host-container mapping
- Docker security overview
Docker container State management
- Sharing the data across containers with volume
- Mount persistent volumes to containers from host system
Docker Compose and docker-machine tools
- Container configuration with YML files
- Docker-compose commands
- Configure and Deploy micro-service with database
- Monitor the micro-service in container
- Docker-Machine to manage multiple docker hosts
- Interaction with docker-machine
Docker Container Orchestration with Swarm
- High availability with Cluster
- The nodes in cluster
- Docker Swarm manager and worker nodes
- Deploy an application across multiple docker host nodes
- Load balancing and instance management
- Application updates (rolling updates) and roll back
- Scale the containers
- Monitor the containers
- Inspect the services
- Using logging drivers
- Custom network plug-in
Kubernetes for Container orchestration
- Kubernetes for orchestration of containers
- Kubernetes cluster
- Kubernetes architecture and features
- Kubernetes Core Concepts
- Kubernetes tools
- Using the VM Drivers
- Start basic single node minikube cluster
- The minikube commands overview
- Basic objects
- Pod
- Service
- Volume
- Namespace
- The kubectl commands for deployment and monitoring
- The pod configuration in YML file
- Create and manage pods with kubectl
- The host network and host port mode
- Run and monitor the pods with logs
- Inspect the pods
- Interact with pods
- Kubernetes docker daemon
- Pods with multiple containers: inspect, interact and logs
- Linking the containers in pod
- Rolling updates
- Monitor and manage the cluster with dashboard
Manage the container state with volume
- The pods with volume
- Sharing the data across containers with volume
- Making the volume data persistent by mounting from host system
- Configure PersistentVolume and PersistentVolumeClaim objects
- Using the PersistentVolumeClaim in the container
Kubernetes Cluster Deployments
- Deployment : to group multiple pod instances
- Replication : To manage multiple replicas of pods
- Staefulset: To manage the Stateful applications
- DaemonSet : To manage the group of pods across hosts
- Job :Grouping of pods
- Create deployment
- The deployment options
- The labels and selectors in deployment
- The service types
- ClusterIP
- NodePort
- Loadbalancer
- ExtrenalName
- Expose the deployment with service
- Service port mapping : fixed and dynamic
- Inspect and log the service
- Scale the service
- Service Discovery
- Default services and namespaces
- Communication with outside world
- The service updates(rolling update) and rollbacks
- The service load balancing
- Ingress Controller for load balancing
- Dashboard to monitor the cluster objects
Kubernetes Distributed Cluster
- Cluster tools
- Kubeadm
- Kubelet
- Kube-proxy
- Kubectl
- Configure Cluster in network with master and nodes
- Kubernetes Kops cluster overview
- Deploying and Monitoring the Kubernetes cluster
- Kubernetes REST API for Control and analyze
- Health Checks and live-ness for pods/applications
- Resource Quotas
- Working with Namespaces
- User/security Management
Helm for Kubernetes applications and deployments
- Manage the Kubernetes applications
- Install Helm CLI and Tiller
- The charts YAML file structure
- Versioning and dependencies and tags
- Define the requirements
- The Helm Charts to define, install and upgrade
- Search and publish the apps with charts
- Using Helm to manage the deployments