Slide 1

Slide 1 text

The Twelve-Factor App

Slide 2

Slide 2 text

Objetivo Dúvidas The 12 Factors App Cloud Native App Agenda

Slide 3

Slide 3 text

Objetivo

Slide 4

Slide 4 text

Cloud Native App

Slide 5

Slide 5 text

Cloud Native App Os aplicativos nativos da nuvem são uma coleção de serviços pequenos, independentes e fracamente acoplados. O nativo da nuvem é uma abordagem para construir e executar aplicativos que explora as vantagens do modelo de entrega de computação em nuvem. As tecnologias nativas da nuvem capacitam as organizações a criar e executar escalonáveis aplicativos em ambientes modernos e dinâmicos, como público, privado e nuvens híbridas.

Slide 6

Slide 6 text

Cloud Native App Um conjunto de boas práticas para otimizar um aplicativo na nuvem por meio de: • Conteinerização • Orquestração • Automação By: Otávio Santana

Slide 7

Slide 7 text

The Twelve-Factor App

Slide 8

Slide 8 text

The Twelve-Factor App Metodologia para construção de software como serviço: • Portabilidade • Escalabilidade • Divergência mínima • Declarativo

Slide 9

Slide 9 text

I. Base de Código Uma base de código com rastreamento utilizando controle de revisão e muitos deploys

Slide 10

Slide 10 text

I. Base de Código

Slide 11

Slide 11 text

I. Base de Código

Slide 12

Slide 12 text

II. Dependências Declare e isole as dependências

Slide 13

Slide 13 text

III. Configurações Armazene as configurações no ambiente NÃO NO CÓDIGO

Slide 14

Slide 14 text

III. Configurações Produção Desenvolvimento Configuração Configuração

Slide 15

Slide 15 text

III. Configurações Produção Desenvolvimento

Slide 16

Slide 16 text

III. Configurações application.yaml spring: application: name: ${APPLICATION_NAME:app-demo} jpa: datasource: platform: ${DATABASE:mysql} url: ${DATASOURCE_URL} username: ${DB_USERNAME} password: ${DB_PASSWORD}

Slide 17

Slide 17 text

III. Configurações app-deployment.yaml apiVersion: apps/v1 kind: Deployment template: spec: containers: - name: app image: app:v1 env: - name: DATASOURCE_URL value: "jdbc:mysql://localhost:3306/database" - name: DB_USERNAME value: "username" - name: DB_PASSWORD value: "password"

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Dica do Spring application.properties spring.application.name: Zup ---------------------------------------------- Docker, Openshift, Kubernetes, etc SPRING_APPLICATION_NAME : Zup Insights

Slide 20

Slide 20 text

IV. Serviços de Apoio Trate os serviços de apoio, como recursos ligados

Slide 21

Slide 21 text

IV. Serviços de Apoio

Slide 22

Slide 22 text

V. Construa, lance, execute Separe estritamente os builds e execute em estágios

Slide 23

Slide 23 text

V. Construa, lance, execute CI: Continuous Integration CD: Continuous Deployment & Delivery

Slide 24

Slide 24 text

V. Construa, lance, execute • Blue \ Green • Zero downtime • Canary \ Dark launch • 90% v1 • 10% v2 • Traffic Mirroring

Slide 25

Slide 25 text

Progressive Delivery

Slide 26

Slide 26 text

VI. Processos Execute a aplicação como um ou mais processos que não armazenam estado

Slide 27

Slide 27 text

VI. Processos • Escalabilidade Horizontal • Balanceador de carga • Escala automática • Docker • Kubernetes • Openshift • Os dados devem ser armazenados em um serviço de apoio com estado, normalmente um banco de dados!

Slide 28

Slide 28 text

VII. Vínculo de porta Exporte serviços por ligação de porta

Slide 29

Slide 29 text

Utilize JAR não WAR

Slide 30

Slide 30 text

VIII. Concorrência Dimensione por um modelo de processo

Slide 31

Slide 31 text

VIII. Concorrência

Slide 32

Slide 32 text

IX. Descartabilidade Maximizar a robustez com inicialização e desligamento rápido

Slide 33

Slide 33 text

IX. Descartabilidade Microservice Balanceador de Carga Microservice Não está pronto!

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

IX. Descartabilidade Referência: https://twitter.com/thomaswue/status/1145603781108928513

Slide 36

Slide 36 text

IX. Descartabilidade Frameworks com rápida inicialização:

Slide 37

Slide 37 text

IX. Descartabilidade Referência: https://spring.io/blog/2020/05/15/spring-boot-2-3-0-available-now Microservice Microservice O desligamento normal é compatível com todos os quatro servidores da Web incorporados (Jetty, Reactor Netty, Tomcat e Undertow) e com aplicativos da Web reativos e baseados em Servlet.

Slide 38

Slide 38 text

X. Dev/prod semelhantes Mantenha o desenvolvimento, teste, produção o mais semelhante possível

Slide 39

Slide 39 text

XI. Logs Trate logs como fluxo de eventos

Slide 40

Slide 40 text

XI. Logs Microservice Microservice Microservice

Slide 41

Slide 41 text

Observabilidade

Slide 42

Slide 42 text

XII. Processos de Admin Executar tarefas de administração/gerenciamento como processos pontuais

Slide 43

Slide 43 text

Resumo I. Base de Código II. Dependências III. Configurações IV. Serviços de Apoio V. Construa, lance, execute VI. Processos VII. Vínculo de porta VIII. Concorrência IX. Descartabilidade X. Dev/prod semelhantes XI. Logs XII. Processos de Admin Construir & Implantar Design & Arquitetura

Slide 44

Slide 44 text

Onde aprender mais? Z U P . C O M . B R / B L O G ONDE APRENDER MAIS OPENSOURCE.ZUP.COM.BR

Slide 45

Slide 45 text

LURAM ARCHANJO Engenheiro de Software luramarchanjo CONTATO @luram_archanjo luram.archanjo@zup.com.br

Slide 46

Slide 46 text

Obrigad_!