SlideShare a Scribd company logo
AWS CDK:
Your Infrastructure is Code!
~ # whoami
(afronski)
✓ Co-founder and Cloud Architect
at Pattern Match
Erlang, Elixir, Java, Node.js
Python, DevOps, AWS
✓ Co-organizer of Natywna Chmura
✓ Program member at Cloudyna
Why me?
[repo]: find . -iname *.yaml -exec cat {} ; | wc -l
5221
[repo]: find . -iname *.sh -exec cat {} ; | wc -l
1231
[repo]: find . -iname *.py -exec cat {} ; | wc -l
200
Why me?
The current state of
Infrastructure as Code
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
1. As a developer, I am tired of using a DSL/YAML.
a. Lack of expressiveness.
b. Limited reusability and modularity.
c. Learning curve in the shared codebase.
2. Configuration Drift.
3. State Management and Stateful Resources.
4. Sensible Testing.
5. Sensible Local Development.
What’s missing?
Alternatives?
1. Ansible - YAML strikes back.
2. Sceptre - Jinja-based CloudFormation templates.
3. AWS SAM - Again, YAML on top of YAML.
4. Stack Deployment Tool - Perun-like case.
5. Terraform - Do I have to explain myself again?
6. Troposphere *
7. Pulumi *
8. AWS CDK
AWS CDK
Cloud Development Kit
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
Features
Features
1. Multiple platforms and programming languages support:
a. TypeScript, Python, JVM (Java), .NET (C#)
2. CloudFormation-native workflow (rollbacks).
a. If something is not supported, you are able
to use so called L1 constructs on your own.
3. Testability and built-in support for local development.
4. Flexibility (AWS CDK Constructs).
5. Easy migration from pure CloudFormation templates.
AWS CDK: Your Infrastructure is Code!
let participant = new User (this, ...);
let userBucket = new Bucket(this, ...);
userBucket.grantReadWrite(participant);
userBucket.addDependsOn(participant);
Demo (4 examples)
patternmatch/aws-cdk-playground
Problems?
1. Documentation.
2. Learning curve (AWS CDK Constructs).
3. No support for passing CloudFormation parameters.
a. AWS CDK introduces Context instead.
4. No support for StackPolicies so far.
5. Some things may need override in the resulting CloudFormation:
a. e.g. not supported services.
6. Generated logical IDs are not exactly user-friendly (debugging).
a. Such template is hard to analyze (assembly language).
What’s next?
1. Documentation!
2. Infrastructure as Code as a first-class source code citizen.
a. e.g. Jenkins Pipelines or Jenkins X.
b. Sidenote: Kubernetes and co do not invalidate the need for IaC.
3. Opening door for abstracting the cloud vendors.
4. Type-safe AWS Infrastructure?
a. punchcard/punchcard
5. Even better support for serverless applications.
References
1. Our company - Pattern Match and my talks.
2. Natywna Chmura (facebook, website).
3. Cloudyna (website) - 13.11.2019, Katowice.
4. Source Code: patternmatch/aws-cdk-playground.
5. Another simple example: patternmatch/amazon-sagemaker-in-practice.
6. AWS Cloud Development Kit - Official Page.
7. AWS CDK Workshop.
8. Python and TypeScript officially supported in AWS CDK.
9. CDK All The Things: A Whirlwind Tour.
10. Building serverless apps with AWS CDK and testing them locally.
11. The Last Thing I missed in the CloudFormation.
12. punchcard/punchcard - Type-safe AWS Infrastructure.
13. Why We Built Ludwig? - Fugue Blog.
14. AWS CloudFormation is an infrastructure graph management service.
15. The Definitive Guide to using Terraform with Serverless Framework.
16. Thoughtworks Technology Radar - HOLD: Handwritten CloudFormation.
17. Terraform vs CloudFormation.
Ad

More Related Content

What's hot (20)

Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
Arawn Park
 
AWS上でのWebアプリケーションデプロイ
AWS上でのWebアプリケーションデプロイAWS上でのWebアプリケーションデプロイ
AWS上でのWebアプリケーションデプロイ
Amazon Web Services Japan
 
Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js
Erik van Appeldoorn
 
React js
React jsReact js
React js
Jai Santhosh
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
Edureka!
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
VMware Tanzu Korea
 
Flutter
FlutterFlutter
Flutter
Dave Chao
 
Reactjs workshop
Reactjs workshop Reactjs workshop
Reactjs workshop
Ahmed rebai
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
Xcat Liu
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetry
DevOps.com
 
Top 50 Node.js Interview Questions and Answers | Edureka
Top 50 Node.js Interview Questions and Answers | EdurekaTop 50 Node.js Interview Questions and Answers | Edureka
Top 50 Node.js Interview Questions and Answers | Edureka
Edureka!
 
React Hooks
React HooksReact Hooks
React Hooks
Joao Marins
 
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
オラクルエンジニア通信
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
Jean-Baptiste Vigneron
 
AWS Blackbelt 2015シリーズ RDS
AWS Blackbelt 2015シリーズ RDSAWS Blackbelt 2015シリーズ RDS
AWS Blackbelt 2015シリーズ RDS
Amazon Web Services Japan
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
Randy Shoup
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
Georgios Andrianakis
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
Amazon Web Services Korea
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
Arawn Park
 
AWS上でのWebアプリケーションデプロイ
AWS上でのWebアプリケーションデプロイAWS上でのWebアプリケーションデプロイ
AWS上でのWebアプリケーションデプロイ
Amazon Web Services Japan
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
Edureka!
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
VMware Tanzu Korea
 
Reactjs workshop
Reactjs workshop Reactjs workshop
Reactjs workshop
Ahmed rebai
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
Xcat Liu
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetry
DevOps.com
 
Top 50 Node.js Interview Questions and Answers | Edureka
Top 50 Node.js Interview Questions and Answers | EdurekaTop 50 Node.js Interview Questions and Answers | Edureka
Top 50 Node.js Interview Questions and Answers | Edureka
Edureka!
 
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
オラクルエンジニア通信
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...The eBay Architecture:  Striking a Balance between Site Stability, Feature Ve...
The eBay Architecture: Striking a Balance between Site Stability, Feature Ve...
Randy Shoup
 

Similar to AWS CDK: Your Infrastructure is Code! (20)

Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
QAware GmbH
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
QAware GmbH
 
Cdk 101
Cdk 101Cdk 101
Cdk 101
TatendaMagondo
 
Cloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombayCloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombay
Nilesh Satpute
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
VMware Tanzu
 
Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
Sandeep Parikh
 
Dystopia as a Service
Dystopia as a ServiceDystopia as a Service
Dystopia as a Service
Adrian Cockcroft
 
AWS EKS: Amazon Manages Kubernetes
AWS EKS: Amazon Manages KubernetesAWS EKS: Amazon Manages Kubernetes
AWS EKS: Amazon Manages Kubernetes
Philipp Koch
 
Functional Programming in Serverless World (Serveless UG Poland)
Functional Programming in Serverless World (Serveless UG Poland)Functional Programming in Serverless World (Serveless UG Poland)
Functional Programming in Serverless World (Serveless UG Poland)
Serverless User Group Poland
 
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Databricks
 
Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda
Outlyer
 
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Laure Vergeron
 
2016 10-26 docker meetup - kubernetes on open stack
2016 10-26 docker meetup - kubernetes on open stack2016 10-26 docker meetup - kubernetes on open stack
2016 10-26 docker meetup - kubernetes on open stack
Amrita Prasad
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
Camuel Gilyadov
 
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdfBuilding infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
mohitd6
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
Andrew Kennedy
 
DevEx | there’s no place like k3s
DevEx | there’s no place like k3sDevEx | there’s no place like k3s
DevEx | there’s no place like k3s
Haggai Philip Zagury
 
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
HostedbyConfluent
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Felix Gessert
 
Functional Programming in Serverless World
Functional Programming in Serverless WorldFunctional Programming in Serverless World
Functional Programming in Serverless World
Wojciech Gawroński
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
QAware GmbH
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
QAware GmbH
 
Cloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombayCloud computing workshop at IIT bombay
Cloud computing workshop at IIT bombay
Nilesh Satpute
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
VMware Tanzu
 
Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
Sandeep Parikh
 
AWS EKS: Amazon Manages Kubernetes
AWS EKS: Amazon Manages KubernetesAWS EKS: Amazon Manages Kubernetes
AWS EKS: Amazon Manages Kubernetes
Philipp Koch
 
Functional Programming in Serverless World (Serveless UG Poland)
Functional Programming in Serverless World (Serveless UG Poland)Functional Programming in Serverless World (Serveless UG Poland)
Functional Programming in Serverless World (Serveless UG Poland)
Serverless User Group Poland
 
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Databricks
 
Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda Matt Chung (Independent) - Serverless application with AWS Lambda
Matt Chung (Independent) - Serverless application with AWS Lambda
Outlyer
 
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Zenko & MetalK8s @ Dublin Docker Meetup, June 2018
Laure Vergeron
 
2016 10-26 docker meetup - kubernetes on open stack
2016 10-26 docker meetup - kubernetes on open stack2016 10-26 docker meetup - kubernetes on open stack
2016 10-26 docker meetup - kubernetes on open stack
Amrita Prasad
 
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdfBuilding infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
Building infrastructure with code_ A deep dive into CDK for IaC in Java.pdf
mohitd6
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
Andrew Kennedy
 
DevEx | there’s no place like k3s
DevEx | there’s no place like k3sDevEx | there’s no place like k3s
DevEx | there’s no place like k3s
Haggai Philip Zagury
 
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
Confluent On Azure: Why you should add Confluent to your Azure toolkit | Alic...
HostedbyConfluent
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Felix Gessert
 
Functional Programming in Serverless World
Functional Programming in Serverless WorldFunctional Programming in Serverless World
Functional Programming in Serverless World
Wojciech Gawroński
 
Ad

More from Wojciech Gawroński (8)

Mashup! AWS Lambda, Elixir and IoT Button
Mashup! AWS Lambda, Elixir and IoT ButtonMashup! AWS Lambda, Elixir and IoT Button
Mashup! AWS Lambda, Elixir and IoT Button
Wojciech Gawroński
 
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Wojciech Gawroński
 
Serverless .NET on AWS
Serverless .NET on AWS Serverless .NET on AWS
Serverless .NET on AWS
Wojciech Gawroński
 
Learn Elixir The Hard Way
Learn Elixir The Hard WayLearn Elixir The Hard Way
Learn Elixir The Hard Way
Wojciech Gawroński
 
Functional Programming in the Wild
Functional Programming in the WildFunctional Programming in the Wild
Functional Programming in the Wild
Wojciech Gawroński
 
Why docker@localhost is not even remotely near DevOps?
Why docker@localhost is not even remotely near DevOps?Why docker@localhost is not even remotely near DevOps?
Why docker@localhost is not even remotely near DevOps?
Wojciech Gawroński
 
How to move a mission critical system to 4 AWS regions in one year?
How to move a mission critical system to 4 AWS regions in one year?How to move a mission critical system to 4 AWS regions in one year?
How to move a mission critical system to 4 AWS regions in one year?
Wojciech Gawroński
 
Abusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and ProfitAbusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and Profit
Wojciech Gawroński
 
Mashup! AWS Lambda, Elixir and IoT Button
Mashup! AWS Lambda, Elixir and IoT ButtonMashup! AWS Lambda, Elixir and IoT Button
Mashup! AWS Lambda, Elixir and IoT Button
Wojciech Gawroński
 
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Amazon SageMaker in Practice - Workshop at Big Data Moscow 2018 (10.10.2018)
Wojciech Gawroński
 
Functional Programming in the Wild
Functional Programming in the WildFunctional Programming in the Wild
Functional Programming in the Wild
Wojciech Gawroński
 
Why docker@localhost is not even remotely near DevOps?
Why docker@localhost is not even remotely near DevOps?Why docker@localhost is not even remotely near DevOps?
Why docker@localhost is not even remotely near DevOps?
Wojciech Gawroński
 
How to move a mission critical system to 4 AWS regions in one year?
How to move a mission critical system to 4 AWS regions in one year?How to move a mission critical system to 4 AWS regions in one year?
How to move a mission critical system to 4 AWS regions in one year?
Wojciech Gawroński
 
Abusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and ProfitAbusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and Profit
Wojciech Gawroński
 
Ad

Recently uploaded (20)

AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 

AWS CDK: Your Infrastructure is Code!

  • 2. ~ # whoami (afronski) ✓ Co-founder and Cloud Architect at Pattern Match Erlang, Elixir, Java, Node.js Python, DevOps, AWS ✓ Co-organizer of Natywna Chmura ✓ Program member at Cloudyna
  • 3. Why me? [repo]: find . -iname *.yaml -exec cat {} ; | wc -l 5221 [repo]: find . -iname *.sh -exec cat {} ; | wc -l 1231 [repo]: find . -iname *.py -exec cat {} ; | wc -l 200
  • 5. The current state of Infrastructure as Code
  • 10. 1. As a developer, I am tired of using a DSL/YAML. a. Lack of expressiveness. b. Limited reusability and modularity. c. Learning curve in the shared codebase. 2. Configuration Drift. 3. State Management and Stateful Resources. 4. Sensible Testing. 5. Sensible Local Development. What’s missing?
  • 11. Alternatives? 1. Ansible - YAML strikes back. 2. Sceptre - Jinja-based CloudFormation templates. 3. AWS SAM - Again, YAML on top of YAML. 4. Stack Deployment Tool - Perun-like case. 5. Terraform - Do I have to explain myself again? 6. Troposphere * 7. Pulumi * 8. AWS CDK
  • 16. Features 1. Multiple platforms and programming languages support: a. TypeScript, Python, JVM (Java), .NET (C#) 2. CloudFormation-native workflow (rollbacks). a. If something is not supported, you are able to use so called L1 constructs on your own. 3. Testability and built-in support for local development. 4. Flexibility (AWS CDK Constructs). 5. Easy migration from pure CloudFormation templates.
  • 18. let participant = new User (this, ...); let userBucket = new Bucket(this, ...); userBucket.grantReadWrite(participant); userBucket.addDependsOn(participant);
  • 20. Problems? 1. Documentation. 2. Learning curve (AWS CDK Constructs). 3. No support for passing CloudFormation parameters. a. AWS CDK introduces Context instead. 4. No support for StackPolicies so far. 5. Some things may need override in the resulting CloudFormation: a. e.g. not supported services. 6. Generated logical IDs are not exactly user-friendly (debugging). a. Such template is hard to analyze (assembly language).
  • 21. What’s next? 1. Documentation! 2. Infrastructure as Code as a first-class source code citizen. a. e.g. Jenkins Pipelines or Jenkins X. b. Sidenote: Kubernetes and co do not invalidate the need for IaC. 3. Opening door for abstracting the cloud vendors. 4. Type-safe AWS Infrastructure? a. punchcard/punchcard 5. Even better support for serverless applications.
  • 22. References 1. Our company - Pattern Match and my talks. 2. Natywna Chmura (facebook, website). 3. Cloudyna (website) - 13.11.2019, Katowice. 4. Source Code: patternmatch/aws-cdk-playground. 5. Another simple example: patternmatch/amazon-sagemaker-in-practice. 6. AWS Cloud Development Kit - Official Page. 7. AWS CDK Workshop. 8. Python and TypeScript officially supported in AWS CDK. 9. CDK All The Things: A Whirlwind Tour. 10. Building serverless apps with AWS CDK and testing them locally. 11. The Last Thing I missed in the CloudFormation. 12. punchcard/punchcard - Type-safe AWS Infrastructure. 13. Why We Built Ludwig? - Fugue Blog. 14. AWS CloudFormation is an infrastructure graph management service. 15. The Definitive Guide to using Terraform with Serverless Framework. 16. Thoughtworks Technology Radar - HOLD: Handwritten CloudFormation. 17. Terraform vs CloudFormation.

Editor's Notes

  • #2: Hello! Thank you for being here! I am energized, because I would like to share some exciting news with you. I really think that it provides a fresh and novel ideas to the Infrastructure as Code space.
  • #3: My name is Wojtek, afronski on the internet. Cloud Architect and Co-founder of the Pattern Match. That lovely avatar is made by my friends from Pattern Match after I bragged about that I can write a bash loop from memory (and obviously failed). ;) In PM we’re doers - experienced and trusted advisors in best practices of software delivery, efficiency, performance and availability. We do that by employing successfully cloud computing, cloud native approach and destroying walls between business and technical teams.
  • #4: Why me? Am I qualified to whine about this topic? That is just a snapshot from one of the projects that I bootstrapped and maintained for more than a 2 years. YAML here is representing a pile of AWS CloudFormation. So I know a thing or two about Infrastructure as Code from design, implementation and maintenance points of view. Nowadays I am writing more Python than bash, but pile of text files is not smaller surprisingly.
  • #5: The amount of YAML and CloudFormation was so overwhelming that I thought it would be a great idea to write a separate tool that will perform an opinionated linting, validation, and other helpful operations on it. Name of this tool is Perun and its written in Go. I am the creator of this tool, most of us from Pattern Match contributed to this tool - it stayed in the good hands of our colleagues at Appliscale. At this point of time I think it was a Stockholm Syndrome. Reasoning and justification sounded perfectly fine to me. From the perspective of couple more projects I think we did a huge mistake there to not employ better tools at that time.
  • #6: Knowing a bit about me, allow me to show you the current landscape of the Infrastructure as Code. And I will start with a rant about the current state of IaC. WARNING: bear with me, when I will hyperventilate.
  • #7: Oh boy there are a lot of yaks to be shaved here. YAML anyone? I have a bad news to you - if you are throwing YAML files back and forth you are not an engineer, nor a programmer. Anyone recognizes this cute error up in the corner? Yup, that is Terraform that blown up and if you will have luck, you will be able to restore state from the remote backend without nitpicking JSON via scissors and glue.
  • #8: Those who work with CloudFormation on a daily basis and are old enough to remember the JSON representation of it will have a goosebumps right now. I know it sounds, but YAML is a better part of the CloudFormation. But here it comes the best part! This YAML is a subset of an original YAML specification. What is missing? E.g. no anchors (very useful), no variables, no way to reuse fragments.
  • #9: Why am I talking about this? Because more smarter people than me are seeing the shortcomings of those methods. Here you have a screenshot from the latest Technology Radar by Thoughtworks where they’ve marked Handwritten CloudFormation as a Hold (so you should avoid that). I am surprised tho, that they are naming Terraform as a sensible default - as it has its downfalls too and does not provide a sensible rollback, where CloudFormation does.
  • #10: Current state of IaC sucks, and it’s covered by a lot of DSLs or YAML files that eventually will blow up in our faces. Nowadays most of the decisions are made between Terraform (supposedly free of vendor lock-in) and Cloud Vendor specific tools. Which is represented by the new and official logo of AWS CloudFormation, but you can use any logo e.g. Google Deployment Manager. Our friends that pray to the Kubernetes god are smiling in the corner - they will powerful and superior. They are supposedly agnostic of “this crap” and … they use tool specific YAML format. Those people are sharing the smirk with the guys doing serverless apps with use Serverless Framework. Guess what? This YAML is problematic too, and maintaining a significant serverless system causes a lot of pain. At least it is much easier and more maintainable than using Terraform for that. God forbid! All those techniques are susceptible on main issues: Configuration Drift. State Management. Dealing with stateful resources. How to sensibly test this crap? All those problems are showing clearly: Is it a proper battle to fight in a first place?
  • #11: Let’s see what is missing and how it can be improved. For sure we can benefit from having a real programming language and its expressiveness. You may ask: what with my declarativeness? Well, as a functional programmer I can tell you that in most cases YAML is as declarative as the API allows for it. Declarative programming has roots in functional programming and is about telling what we want to do, without describing how we want to do it. We express the logic of a computation without describing its control flow, which is perfectly possible with regular programming languages. How to handle configuration drift? Assuming we are dealing with distributed environments, on-calls and so on. Managing state when provisioning is also problematic, as you have to deal with many shortcomings, and people that are using Terraform and nested CloudFormation stacks are having goosebumps now. Sensible testing mechanism to shorten the feedback loop and maintainability. Sensible local development - again for shortening the feedback loop and experimentation.
  • #12: Let’s investigate alternatives and how they map with the deficiencies that we have described previously: So you can go with Ansible for orchestration and its wrappers - we are using that, and it works sensibly, although it’s not a real code, and you are moving above the original abstraction. You can use Sceptre (provided by CloudReach), but still it is a Jinja2 templating smacked on top of YAML with added orchestration. AWS SAM has the same deficiencies and its serverless specific. Stack Deployment Tool is basically the same story I have described with Perun - it’s a Stockholm Syndrome. Terraform was covered previously - I do not treat it as a viable alternative here. No rollback, share most of the issues with CloudFormation, just has different syntax. Last three options are the closest to the real code and they can be considered a viable alternative. To be precise only AWS CDK, because Troposphere and Pulumi for now are not providing a sensible testability. Also Pulumi is serverless specific. With Troposphere it is possible, although it’s not available out of the box.
  • #13: Let’s talk about our “savior” now. AWS CDK was originally created around September 2018 and released as a beta around that time. I have used the beta version in Autumn 2018, where it was available just for TypeScript and at that time it already looked promising. I have gathered my thoughts and observation in the blog post attached to this slide. In June 2019 AWS announced that Cloud Development Kit is generally available for TypeScript and Python. Yet, it supports additionally Java and C# too.
  • #14: How it works? It basically allows you to model your infrastructure with use of code and programming languages using a library of constructs. With use of this library you are create, manage, implement, and maintain infrastructure as code definitions that at the end are translated directly to the AWS CloudFormation. It allows you to build on top of well-known patterns and behaviors of this service - including rollback, configuration drift, state management. Yet, you have capabilities of a first-class programming languages.
  • #15: I deliberately said translates. If you will treat CloudFormation templates as an intermediate language (e.g. assembly), it works exactly like the compiler. For us, programmers, it is a bread and butter - we work on a higher level of abstraction, reusing higher level constructs and modules that are compiling to the low-level elements delivered by the platform or runtime. In that case CloudFormation service is our runtime or execution engine.
  • #16: Let’s discuss briefly its the most interesting features before we will dive into the details during demo session.
  • #17: I’ve already said that they are supporting multiple programming languages - the best and official support is for TypeScript and Python. Java and C# are still in beta, but perfectly usable. It’s fully based on CloudFormation service and templates, so you have all benefits and traits of those built-in. That includes rollbacks, configuration drifts, full support on the AWS side, and many others. It means, that even if the library maintainers are a little bit behind, you are able to spit our regular CloudFormation with use of L1 constructs and fill out the gaps with pure CloudFormation syntax. It is fully testable locally, and even encourages local development - with checking configuration drift, diffs, generating synthesized template, etc. It gives you the flexibility of the programming language and ability to create modular, reusable abstractions with use of constructs. Which is a game changer for the most of the alternatives mentioned previously. It allows for an easy migration from the pure CloudFormation templates with use of many techniques: You can rewrite your templates into CDK using overrides for simpler templates. You can include your existing more complicated templates into CDK and rewrite them bit by bit. You can use built-in disassembler that creates a raw AWS CDK code in a given language from AWS CloudFormation. Even if it does not fully use the power of CDK (it’s of course a limited tool), it really helps with kickstarting the effort and starting the project.
  • #18: Here you have just one example of the diff between the current managed state and the CDK definition stored locally. It shows you the exact difference, and you can use the same mechanism doing local tests (e.g. with unit testing).
  • #19: Speaking about abstractions and helpers: AWS CDK provides a lot of existing abstractions and constructs, including permissions and dependency management as written on the slide. Behind the line with grant we have already impemented the IAM and permissions management for many resources.
  • #20: Let’s now pray to the demo gods to not screw up with me!
  • #21: Let me recap the demo, by unveiling the current problems - no pain, no gain: Documentation sucks currently - most of the examples are written and prepared for TypeScript only. It has some learning curve especially if you used to CloudFormation. Outside of constructs, the most surprising change is related to parameters. CloudFormation parameters are resolved when deploying, so you can generate a CloudFormation template with parameters, but you cannot deploy it with use of CDK, there is no way to type check/validate that on the code level - instead CDK recommends to use contexts. Again, it is the controversial decision that is a tradeoff. They did that because of compile-time guarantees. You can read more about that here. Even it is generally available, it has no support for StackPolicies. Also on the same note, some things requires override in the resulting CloudFormation, if they are not supported. When it comes to debugging - it is not so user-friendly as handwritten template (which is kinda obvious if we are using it like assembly language), and it may be harder to analyze those. However, it is possible and it just requires practice, nothing else.
  • #22: Let me wrap up the presentation by talking about possible future enhancements and direction where it can drive us: First they need to work on the documentation, but I think it is a matter of time. The more important thing is that we finally treating Infrastructure as Code. That gives us interesting capabilities and opens new doors for future. A few years back nobody thought that we will configure CI/CD deployment pipelines alongside with the code - we may observe similar trend thanks to such solutions. Additionally starting the discussion about abstraction allows us to think about real solutions for abstracting cloud providers. I think that such frameworks are the first step for that. In future we may observe trends and moves related with the type-safe AWS Infrastructure or describing infrastructure needed for serverless applications in the same language we write the compute layer.
  • #23: Here you can find most important resources that I have used for preparing the presentation.