Slide 1

Slide 1 text

Cloud-Native: Endlich (Voll)Automatisierung Thorsten Hans @ThorstenHans Cloud-Native Consultant

Slide 2

Slide 2 text

Consultant @ Thinktecture #Azure #Kubernetes #CloudNative #Docker [email protected] thinktecture.com thorsten-hans.com @ThorstenHans Microsoft MVP | Docker Captain Thorsten Hans

Slide 3

Slide 3 text

What we won’t cover • Feedback-Loop automation • Non-Code & Non-Infra automation Non-Scope

Slide 4

Slide 4 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda

Slide 5

Slide 5 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda

Slide 6

Slide 6 text

Chances are quite good, that you have already heard something like “If you do it more than once, automate it!” This (quite dated) sentence describes the essence of how to survive in the cloud. Introduction

Slide 7

Slide 7 text

• That said, teams must identify all areas where they can benefit from automation • Treat your automation as first-class citizen • Schedule time to select your tools / stacks • Schedule time to implement automation Introduction

Slide 8

Slide 8 text

• Typical areas for automation are • Inner-Loop (day-to-day tasks done by devs locally) • Infrastructure • Continuous Integration / Deployment • User Feedback (Bugs / Feature Requests) • Incident management • Self-Service / Onboarding / Offboarding • Billing / Invoicing Introduction P

Slide 9

Slide 9 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda

Slide 10

Slide 10 text

• How can you run your app locally? • Do not consider anything. Although your peers may know the CLIs you need to get things done. • Use tools / languages that run on all operating systems that are used in the team • Track your tasks for a representative time (a month, a sprint, … ) to see what must be automated Inner-Loop Automation

Slide 11

Slide 11 text

• Do not use interpreted languages (e.g. JavaScript to automate your inner-loop) • Languages like C#, Go, Rust offer frameworks to build automation CLIs • Shell-Scripts and Makefiles work everywhere • For Windows-Developers, WSL2 is a must Inner-Loop Automation

Slide 12

Slide 12 text

Inner-Loop • Automate Inner-Loop tasks in cloud-native projects Demo

Slide 13

Slide 13 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda

Slide 14

Slide 14 text

• Infrastructure is not just the server / service • Identify proper Infrastructure-as-Code (IaC) tooling for your needs • Deal with the fact that multiple technologies must be used to automate everything • Cloud-Providers do not expose everything as API • Design your IaC with repetitive deployments in mind • Unique name constraints • Different authorization requirements per environment Infrastructure Automation

Slide 15

Slide 15 text

• Enforce shared ownership and reviews for IaC • This could be achieved using well-known strategies in Source Control (e.g. Git Flow) • Many teams struggle with the consistent usage of IaC • IaC means every! infrastructure modification is done via code • Discuss in the team if they’re aware of the impact • Ultimately, you may prevent all human users from modifying cloud resource by enforcing corresponding RBAC rules Infrastructure Automation

Slide 16

Slide 16 text

Infrastructure Automation • Mutate existing infrastructure using IaC Demo

Slide 17

Slide 17 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda

Slide 18

Slide 18 text

• Deploy individual components independently • In Kubernetes you can use GitOps as alternative to classical Continuous Deployment • Use dedicated Service Principal (or federated Identity when using GitHub and Azure) Deployment Automation

Slide 19

Slide 19 text

• Only use shared templates if deployment is identical across components • Do not start adding configuration parameters that allow pipelines or actions to control template behaviour • Use concurrency groups to control concurrent executions (especially when automating IaC) • Inline Scripts are great for simple commands, if your scripts get more complicated, use dedicated script files and use them in your pipeline / actions Deployment Automation

Slide 20

Slide 20 text

Deployment Automation • Continuous Deployment with GitHub Actions Demo

Slide 21

Slide 21 text

• Introduction • Inner-Loop Automation • Infrastructure Automation • Deployment Automation • Conclusion Agenda P

Slide 22

Slide 22 text

• Inner-Loop • Identify all day-to-day tasks and automate them • Build your inner-loop automation for all platforms • Document and Dog-Food it • Infrastructure as Code • Choose your toolset and stick with it • Try to build re-usable components • Decide if IaC is a one-time shot for you and your team or not! Conclusion

Slide 23

Slide 23 text

• Deployment Automation • Buy / rent enough parallel agents when doing Continuous Deployment • Pin tool versions explicitly • Trim your triggers / especially in mono-repos Conclusion

Slide 24

Slide 24 text

Automate everything, there is no exception Conclusion

Slide 25

Slide 25 text

Thanks for your attention @ThorstenHans