O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services

360 visualizações

Publicada em

Cloud native applications are composed of containers, serverless functions and managed cloud services.

What is the best set of tools on your desktop to provide a rapid, iterative development experience and package applications using these three components?

This hand-on talk will explain how you can complement Docker Desktop, with it’s local Docker engine and Kubernetes cluster, with open source tools such as the Virtual Kubelet, Open Service Broker, the Gloo hybrid app gateway, Draft, and others, to build the most productive development inner-loop for these type of applications.

It will also cover how you can use the Cloud Native Application Bundle (CNAB) format and it’s implementation in the Docker app experimental tool to package your application and manage it with container supply chain tooling such as Docker Hub.

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services

  1. 1. Patrick Chanezon Cloud Advocate, Microsoft @chanezon Developing Apps with Containers, Functions and Cloud Services
  2. 2. @chanezon 1994-2005 Software Engineer 2005-2019 Developer Relations
  3. 3. Developer Productivity
  4. 4. Microsoft’s mission “Our mission is to empower every person and every organization on the planet to achieve more.” https://www.microsoft.com/en-us/about
  5. 5. 3 Abstractions to build cloud apps • Containers • Functions, triggered by Events • Managed Cloud Services
  6. 6. Containers
  7. 7. Docker Enterprise 3.0 Securely build, share and run any application, anywhere ANY APPLICATION EVERY STAGE ANYWHERE Hybrid Cloud VM Bare Metal Edge RunBuild Share
  8. 8. Platform built on infrastructure, built on standards. Docker
  9. 9. Deploy your applications quickly and predictably Scale your applications on the fly Roll out new features seamlessly Limit hardware usage to required resources only Portable Public, private, hybrid, multi-cloud Extensible Modular, pluggable, hookable, composable Self-healing Auto-placement, auto-restart, auto-replication, auto-scaling Kubernetes
  10. 10. Docker Desktop
  11. 11. Containers in Azure Choice of developer tools and clients Azure Container Registry Docker Hub App Service Deploy web apps or APIs using containers in a PaaS environment Service Fabric Modernize .NET applications to microservices using Windows Server containers Kubernetes Service Container Instance Scale and orchestrate Linux containers using Kubernetes Ecosystem Bring your Partner solutions that run great on Azure Elastically burst from your Azure Kubernetes Service (AKS) cluster
  12. 12. VM Pods VM Pods VM Pods VM Pods Kubernetes control pane Azure Container Instances (ACI) Pods ACI Connector Application Architect Infrastructure Architect Deployment/ tasks Bursting with the ACI Connector/ Virtual Kubelet
  13. 13. Virtual Kubelet
  14. 14. Functions
  15. 15. *Supporting services, like storage and networking, may be charged separately. Pay-per-use Only pay for what you use: billing is typically calculated on the number of function calls, code execution time, and memory used.* Instant, event-driven scalability Application components react to events and triggers in near real-time with virtually unlimited scalability; compute resources are used as needed. Full abstraction of servers Developers can just focus on their code—there are no distractions around server management, capacity planning, or availability. What is serverless?
  16. 16. FaaS is at the center of serverless Functions-as-a-Service programming model use functions to achieve true serverless compute Single responsibility Functions are single- purposed, reusable pieces of code that process an input and return a result Short lived Functions don’t stick around when finished executing, freeing up resources for further executions Event driven & scalable Functions respond to predefined events, and are instantly replicated as many times as needed Stateless Functions don’t hold any persistent state and don’t rely on the state of any other processes
  17. 17. What is Azure Functions? Anevent-based,serverlesscomputeexperiencethatacceleratesappdevelopment Azure Functions = FaaS++ Integrated programming model Use built-in triggers and bindings to define when a function is invoked and to what data it connects Enhanced development experience Code, test and debug locally using your preferred editor or the easy-to-use web based interface including monitoring Hosting options flexibility Choose the deployment model that better fits your business needs without compromising development experience
  18. 18. Boost development efficiency Integrate with Azure Application Insights Get near real-time details about function apps See metrics around failures, executions, etc.Monitoring Save time with built-in DevOps Deploy functions using App Service for CI Leverage Microsoft, partner services for CDCI/CD Use triggers to define how functions are invoked Avoid hardcoding with preconfigured JSON files Build serverless APIs using HTTP triggersTriggers Connect to data with input and output bindings Bind to Azure solutions and third-party services Use HTTP bindings in tandem with HTTP triggersBindings Define one API surface for multiple function apps Create endpoints as reverse proxies to other APIs Condition proxies to use variablesProxies Debug C# and JavaScript functions locally Use debugging tools in Azure portal, VS, and VS Code Local debugging
  19. 19. Gain flexibility and develop your way Write code in C#, JavaScript, F#, and Java Continuous investment in new, experimental languagesMultiple languages Simplify coding for new users with native Azure portal Select from popular editors, like VS, VS Code, CLI, Maven*Dev options Choose from six consumption plans to run Functions Run your first million function executions for freeHosting options *VS and VS Code only support C#; Maven only supports Java Write stateful functions in a serverless environment Simplify complex, stateful coordination problems Add the extension to enable advanced scenarios Durable Functions
  20. 20. Azure Functions is an open-source project Functionsruntimeandallextensionsarefullyopensource https://github.com/Azure/Azure-Functions
  21. 21. Serverless Apps on Azure
  22. 22. Portable Serverless PlatformsFn Nuclio OpenFaaS Galactic Fog OpenWhisk Diagrams from https://github.com/cncf/wg-serverless/tree/master/whitepaper
  23. 23. KNative & Friends
  24. 24. Managed Cloud Services
  26. 26. Open Service Broker for Azure (OSBA) Open Service Broker for Azure (OSBA) SQL Database Event Hubs Redis Cache MySQL Database Cosmos DB PosgreSQL Database Service Bus Azure Storage Cloud Foundry Kubernetes Service FabricOpenShift Easily access to SLA-backed Azure Services such as Azure Database for MySQL
  27. 27. Open Source Tooling
  28. 28. Microsoft drives community-led innovations for Kubernetes Microsoft also maintains… Cloud Native Application Bundles (CNAB) Virtual KubeletHelm BrigadeDraft 68% of Kubernetes users* prefer Helm as their package manager Visual Studio Code Kubernetes Extensions has 11K monthly active users *August 2018 bi-annual CNCF survey
  29. 29. Find, share, and use software built for k8s Manage complexity Easy updates Simple sharing Rollbacks
  30. 30. Simple app development and deployment – into any Kubernetes cluster Simplified development Using two simple commands, developers can now begin working on container-based applications without requiring Docker or even installing Kubernetes themselves Language support Draft detects which language your app is written in, and then uses packs to generate a Dockerfile and Helm Chart with the best practices for that language
  31. 31. Developer Workflows
  32. 32. 3 Abstractions • Containers • Functions, triggered by Events • Managed Cloud Services
  33. 33. Developer Workflows Local Cloud Container Functions Services Code
  34. 34. Docker Desktop
  35. 35. Docker Compose • docker-compose for local dev • docker-compose Kubernetes Extension (API aggregation)
  36. 36. Developer Workflows Local Cloud Container Functions Services docker-compose Azure Functions Runtime mysql, mongo images CosmosDB Code code mounted in local containers inotify to restart if needed
  37. 37. Enterprise management & security, developer productivity, local Kubernetes runtime Native local Docker and certified Kubernetes runtimes for container-first application development for Windows 10 and Mac Automated, template-driven generation of IT-approved Dockerfiles, Docker Compose files, and CI pipelines boosts developer productivity Match desktop and server environments to avoid “works on my machine” friction Centrally manage and secure DDE deployment, upgrades, and configurations Commercial enterprise support Docker Desktop Enterprise
  38. 38. Accelerate “Time-to- Docker” for Developers While Lowering App Pipeline Friction Fastest & easiest way to onboard developers to new Docker projects Supports developer choice of programming languages and application frameworks Accelerates developer productivity with Docker while delivering secure and compliant applications Provides options between CLI and GUI to meet the needs of developers with varying Docker expertise Docker Application Templates
  39. 39. Azure Dev Spaces
  40. 40. Capabilities 1. Use Azure Dev Spaces to iteratively develop, test, and debug microservices targeted for AKS clusters. 2. Azure DevOps has native integration with Helm and helps simplifying continuous integration/continuous delivery (CI/CD) 3. Virtual node—a Virtual Kubelet implementation—allows fast scaling of services for unpredictable traffic. 4. Azure Monitor provides a single pane of glass for monitoring over app telemetry, cluster-to-container level health analytics. https://github.com/Microsoft/SmartHotel360-AKS-DevSpaces-Demo Source code control Inner loop Azure Container Registry Azure Pipeline/ DevOps Project Auto-build Azure Monitor CI/CD Test Debug Azure DevSpaces AKS dev cluster AKS production cluster Pods Container instances Pods 1 2 3 4 Integrated end-to-end Kubernetes experience
  41. 41. Azure Dev Spaces
  42. 42. Azure Dev Spaces
  43. 43. Azure Dev Spaces
  44. 44. Azure Dev Spaces
  45. 45. Azure Dev Spaces
  46. 46. Developer Workflows Local Cloud Container Functions Services Azure Code code synced to cloud AKS Azure Functions code built, started
  47. 47. VS Code Live Share
  48. 48. VS Code Live Share • You just need VS Code locally • Code and all setup on your collaborator’s machine • Code together without setting anything up • Access services on remote machine from localhost • Works with Azure Dev Spaces on machine sharing the session: double jump to AKS
  49. 49. VS Code Live Share with Luca Snoey Github: @tess1254 Twitter: @Snowy_Turtle Medium: https://medium.com/@Snowy_Turtle LinkedIn: https://www.linkedin.com/in/luca-snoey-41911417a/ MS Learn: https://techprofile.microsoft.com/en-us/lucasandbox
  50. 50. Gloo
  51. 51. SOLO GLOO, THE NEXT GENERATION API GATEWAY www.solo.io/glooe
  52. 52. THE PROBLEM: DISPARATE ECOSYSTEMS, HARD TRANSITION Monolithic Apps Microservices Serverless Ansible Kubernetes Azure Functions APM Splunk SOA Prometheus OpenTracing microservices Azure Monitor App Insight Event-driven Enterprise faces 4 main problems in adopting innovative architectures: 1. Insolation between brown and green field 2. Transition is lengthy and diverts essential personnel from core mission 3. Duplicate redundant tools 4. Requires silo teams
  53. 53. LET Gloo BUILD YOUR HYBRID APPS Microservices Proprietary Serverless calc.com/add calc.com/sub calc.com/mul + - ÷ calc.com/div × Hybrid app + × - ÷ Portable Serverless Monolithic Apps
  54. 54. Developer Workflows Local Cloud Container Functions Services Azure Code debugger attach to container in cloud AKS Azure Functions
  55. 55. Telepresence
  56. 56. Telepresence
  57. 57. Developer Workflows Local Cloud Container Functions Services Azure Code local code AKS Azure Functions local process proxied inside aks
  58. 58. Ksync
  59. 59. Tilt
  60. 60. Tilt https://medium.com/windmill-engineering/how-tilt-updates-kubernetes-in-seconds-not-minutes-28ddffe2d79f
  61. 61. Tilt https://github.com/windmilleng/tilt-frontend-demo
  62. 62. Developer Workflows Local Cloud Container Functions Services Azure Code local changes synced to aks AKS Azure Functions
  63. 63. CNAB
  64. 64. Spec for packaging distributed apps CNAB: package distributed apps CNABs facilitate the bundling, installing and managing of container-native apps — and their coupled services Cloud Native Application Bundle
  65. 65. Install and manage distributed app bundles Duffle: install & manage distributed app bundles Simple CLI to interact with CNAB, for use with your clouds and services of choice Duffle
  66. 66. A friendlier cloud installer Install your app and its baggage Bundle up not just the app, but everything it needs to run in the cloud Build bundles smarter, not harder Use mixins for common tools and clouds, and depend on existing bundles. Surprise! It does package management too Package and version your bundle, then distribute it for others to use.
  67. 67. Simplify Application Delivery “Container of containers” defines an application that can be comprised of multiple services Removes the need to manage “mountains of YAML” and eliminates configuration overhead Supports Docker Compose, Kubernetes YAML, Helm Charts, others Implements the new open standard, CNAB, announced by Docker and Microsoft Parameterized fields allow for flexible deployment across different environments, delivering on “code once, deploy anywhere” my-app.yml Docker App APP DESCRIPTION name-version-maintainer APP COMPONENTS ENVIRONMENT VARIABLES default-settings.yml Build, share and run multi-service apps in a single package deployable to any infrastructure Docker Applications
  68. 68. Docker app • Docker app available today in CLI beta with CLI plugin • Implements CNAB spec: install, upgrade, uninstall - bundle to create invocation image & bundle.json • Sharing compose based app definitions in Docker Hub
  69. 69. ● Developing Cloud Native Applications with Docker Desktop and Cloud Services ○ Black belt: 30 April, 4:40 pm, Room 3016 ○ Patrick Chanezon ● Porter: an Opinionated CNAB Authoring Experience ○ Open source: 1 May, 4:40 pm, Room 2002 ○ Jeremy Rickard ● CNAB panel ○ OSS summit: 2 May, 1:30 pm, Room 2006 ○ Michelle Noorali, Darren Pulsipher, Simon Ferquel CNAB at DockerCon
  70. 70. ● Developing New Applications with Docker App Package ○ Workshop ● Compose and Docker App ○ OSS summit: 2 May, 10:00 am, Room 2006 Docker App at DockerCon
  71. 71. Rate & Share Rate this session in the DockerCon App Follow me @chanezon Tweet #DockerCon
  72. 72. Create a free Azure Account: https://aka.ms/pat/account Containers docs: https://aka.ms/pat/container learn: https://aka.ms/pat/learn/container Functions docs: https://aka.ms/pat/functions learn: https://aka.ms/pat/learn/functions We’re hiring: https://aka.ms/awesomejobs Resources
  73. 73. @bridgetkromhout and @brendandburns for some of the slides Thank you
  74. 74. @chanezon https://aka.ms/pat/account