Cod: ARC-015
Durata: 24 ore
Durata: 24 ore
Descriere
Microservice architecture (MSA) a devenit recent una dintre cele mai populare abordari in arhitectura software, in mare parte datorita multitudinii de beneficii pe care le aduce la fiecare stadiu al product life cycle. Mai exact, MSA iti permite imbunatatirea timpului de reactie atunci cand vine vorba de cerintele de business.Insa, in proiectele care folosesc microservices arhictecture, arhitectii software pot intampina diferite provocari care de multe ori ii pot forta pe cei care se afla la inceput de cariera sa faca un roll back. Cateva dintre aceste provocari sunt:
- Erori la nivel de decomposition care pot sa faca procesul de dezvoltare mult mai dificil
- Scaderi potentiale de performanta datorita intarzierilor din retea
- Data storage distribuit care pot sa nu ne lase sa folosim transactional consistency
- Un numar mare de componente care comunica in retea si care pot sa reduca gradul de fiabilitate al sistemului
- Dificultati in ceea ce priveste securitatea
Ca sa nu mai vorbim de faptul ca testarea si mentenanta unui sistem distribuit necesita eforturi suplimentare. Acest training te ajuta sa intelegi avantajele si dezavantajele arhitecturii bazate pe microservicii pentru a putea sa decizi daca un proiect MSA este fezabil in functie de nevoile de business si capacitatile echipei.
In cadrul acestui curs abordam provocarile principale care apar in implementarea microservices architecture si iti oferim strategii, mecanisme si patterns pentru a le rezolva. Vom discuta si invata despre cele mai populare instrumente folosite in arhitectura bazata pe microservicii (Kubernetes, Istio, Histryx, Kibana, si altele).
Subiecte curs
Stiluri arhitecturale- Notiunea de monolit, SOA, MSA
- Comparatie si selectie
MSA decomposition patterns
- Optimal microservice size
- Impartirea in servicii pe baza de business capabilities
- Impartirea in servicii pe baza de problem domains
- Domain identification practices
- Decomposition in functie de aspectele tehnice si organizationale
Cum organizam procesul de software development pentru MSA
- Organizarea echipei pentru MSA
- Organizarea code repository pentru MSA
Integrarea microserviciilor
- Patterns de comunicare
- Mecanisme de comunicare sincrona si asincrona
- Orchestrare si coreografie
- Principalele protocoale si tehnologii (REST, gRPC, GraphQL, Kafka, RabbitMQ, etc.)
- Comunicarea cu sistemele externe (API Gateway, BFF)
- Sisteme reactive
- Arhitecturi event-driven
- Command query segregation
Managementul datelor in MSA
- Data handling patterns
- Event sourcing
- Reference data in MSA
- Single source of truth in MSA
Principalele patterns MSA
- Modifiability. High coupling problem resolution. Versioning of interfaces & events. Types of contracts. Changing event model. Query organization patterns. Microservice chassis. Service mesh
- Scalability. Load balancers patterns. Discovery services & patterns
- Performance. Performance patterns in MSA (Bulkheads, Graceful Degradation, etc.)
- Consistency. Consistency problems in MSA. CAP theorem. Solving consistency problems. Two-phase commits. SAGA Pattern. Decreasing the consistency level
- Reliability. Fault tolerance mechanisms. Circuit Breaker, Throttling, Dependent Timeouts, si alte patterns
- Security. Security mechanisms in MSA. Authentication. Authorization. Perimeter defense. Communication channel defense. Main protocols and patterns (OAUTH2, JWT, Gatekeeper, Valet Key, etc.)
- Testability. Testing pyramid & quadrant. Specifics of microservice testing. Unit testing. Integration testing. Component testing. E2E testing. MSA testing patterns.
- Ease of maintenance. Observability. Observation patterns (distributed tracing, log aggregation, etc.). Monitoring & logging. Microservice configuration. Configuration externalizing. System support
- Microservice deployment. Deployment pipeline pattern. Deployment patterns. Folosire Docker & Kubernetes. Utilizarea ISTIO mesh. Serverless deployment. Deployment strategies (blue-green, canary, etc.)
- Strategii migrare de la monolith la MSA. Strategii de a face shift de la monolith la microservices. Strangler monolith. Strangle patterns. Microservice link to monolith. Migrarea bazei de date
Obiective
- Oferirea unei priviri de ansamblu asupra arhitecturii bazat pe microservicii si legatura sa cu alte arhitecturi de sistem
- Oferirea unei prezentari detaliate legata de designul sistemelor MSA
- Practica in designul sistemelor MSA
- Prezentare celor mai populare patterns de arhitectura bazata pe microservices
Public tinta
- Arhitecti software
- Profesionisti DevOps
- Lead Developers
- Development Managers
Cerinte curs
- Experienta in software development
- Experienta in dezvoltare de arhitectura software sau participarea la cursul de arhitectura software
- Cunostinte de Domain Driven Design sau participarea la cursul Domain Driven Design