From 095d87f2afb8636ebb7013ca57d595a28aaae6bb Mon Sep 17 00:00:00 2001 From: Marcelo Boeira Date: Thu, 14 Oct 2021 17:58:15 +0200 Subject: [PATCH] Add FinOps, fix cloud-cost section --- README.md | 89 ++++++++++++++++++++------------------ resources/topic-graph.mmd | 22 ++++++---- resources/topic-graph.png | Bin 316204 -> 301573 bytes 3 files changed, 59 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index f55fc54..26a4aab 100644 --- a/README.md +++ b/README.md @@ -458,6 +458,8 @@ For instance, take into account the snaptshot above. If you already know how to * 11:00 - Explanation regarding GA * [AWS Global Accelerator](https://www.youtube.com/watch?v=YqcEntZ8pQ4) 📼 🆓 * VPC - Virtual private Cloud + * Network + * [Basic Networking](https://www.youtube.com/watch?v=hiKPPy584Mg) * [Practical VPC Design](https://aws.amazon.com/blogs/startups/practical-vpc-design/) 📰 🆓 * Multi-VPC * [One to Many: Evolving VPC Design](https://aws.amazon.com/blogs/architecture/one-to-many-evolving-vpc-design) 📰 🆓 @@ -656,47 +658,48 @@ For instance, take into account the snaptshot above. If you already know how to * [Deep dive to CPU FlameGraphs](http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html) 📰 💻 🆓 * [Speedscope - visualization tool](http://jamie-wong.com/post/speedscope/) 💻 🆓 * [Presentation on FlameGraphs](https://speakerdeck.com/mrfoto/what-are-flame-graphs-and-how-to-read-them) 🎥 🆓 - * Serverless - * [SAM](https://aws.amazon.com/serverless/sam/)- Serverless Application Model - * [What is SAM?](https://youtu.be/1dzihtC5LJ0) 📼 🆓 - * Lambda - * Layers - * [What are Lambda Layers?](https://www.youtube.com/watch?v=ebhcs-9FYJA) 📰 🆓 - * Extensions - * [Intro to Extensions for AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-extensions-in-preview/) 📰 🆓 - * [Building Extensions for AWS Lambda](https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/) 📰 🆓 - * [Building Extension API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html) 📰 🆓 - * Security - * Authentication - * OpenID/OICD - * [Amazon Cognito](https://www.youtube.com/watch?v=OAR4ZHP8DEg) 📼 🆓 - * Firewall - * WAF - Web Application Firewall - * [What is a Web Application Firewall (WAF)?](https://www.youtube.com/watch?v=p8CQcF_9280) 📼 🆓 - * [The AWS Web Application Firewall (WAF)](https://youtu.be/SmF_wQuZ7z4) 📼 🆓 - * Encryption - * Theory - * History - * Ceasar - * Symetric - * Asymetric + * Serverless + * [SAM](https://aws.amazon.com/serverless/sam/)- Serverless Application Model + * [What is SAM?](https://youtu.be/1dzihtC5LJ0) 📼 🆓 + * Lambda + * Layers + * [What are Lambda Layers?](https://www.youtube.com/watch?v=ebhcs-9FYJA) 📰 🆓 + * Extensions + * [Intro to Extensions for AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-extensions-in-preview/) 📰 🆓 + * [Building Extensions for AWS Lambda](https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/) 📰 🆓 + * [Building Extension API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html) 📰 🆓 + * Security + * Authentication + * OpenID/OICD + * [Amazon Cognito](https://www.youtube.com/watch?v=OAR4ZHP8DEg) 📼 🆓 + * Firewall + * WAF - Web Application Firewall + * [What is a Web Application Firewall (WAF)?](https://www.youtube.com/watch?v=p8CQcF_9280) 📼 🆓 + * [The AWS Web Application Firewall (WAF)](https://youtu.be/SmF_wQuZ7z4) 📼 🆓 + * Encryption + * Theory + * History + * Ceasar + * Symetric + * Asymetric + * Cloud + * [How Encryption Works @ AWS](https://www.youtube.com/watch?v=plv7PQZICCM) 📼 🆓 + * [KMS](https://aws.amazon.com/kms/) + * [Encryption and Key Management @ AWS](https://www.youtube.com/watch?v=uhXalpNzPU4) 📼 🆓 + * Certificates + * Service Name Indication + * [What is SNI?](https://www.youtube.com/watch?v=manTiXESYG0) 📼 🆓 + * Monitoring + * Data Leaks + * [Amazon Macie](https://www.youtube.com/watch?v=8piwEQJJXdo) 📼 🆓 + * Multi-tenancy + * SaaS + * [AWS re:Invent 2019: SaaS tenant isolation patterns](https://www.youtube.com/watch?v=fuDZq-EspNA) + * Cost * Cloud - * [How Encryption Works @ AWS](https://www.youtube.com/watch?v=plv7PQZICCM) 📼 🆓 - * [KMS](https://aws.amazon.com/kms/) - * [Encryption and Key Management @ AWS](https://www.youtube.com/watch?v=uhXalpNzPU4) 📼 🆓 - * Certificates - * Service Name Indication - * [What is SNI?](https://www.youtube.com/watch?v=manTiXESYG0) 📼 🆓 - * Monitoring - * Data Leaks - * [Amazon Macie](https://www.youtube.com/watch?v=8piwEQJJXdo) 📼 🆓 - * Multi-tenancy - * SaaS - * [AWS re:Invent 2019: SaaS tenant isolation patterns](https://www.youtube.com/watch?v=fuDZq-EspNA) - * Cost - * Cloud - * AWS - * [Savings Plans vs Reserved Instances](https://www.youtube.com/watch?v=c_zlPQimrvY) 📼 🆓 - * [How to save with AWS Saving Plans](https://www.youtube.com/watch?v=uQ9ry-9uUvo) 📼 🆓 - * Network - * [Basic Networking](https://www.youtube.com/watch?v=hiKPPy584Mg) + * FinOps + * [What is FinOps?](https://www.finops.org/introduction/what-is-finops/) 🆓 📰 + * [O'Relly - Cloud FinOps](https://www.finops.org/resources/finops-book/) 📕 💰 + * AWS + * [Savings Plans vs Reserved Instances](https://www.youtube.com/watch?v=c_zlPQimrvY) 📼 🆓 + * [How to save with AWS Saving Plans](https://www.youtube.com/watch?v=uQ9ry-9uUvo) 📼 🆓 diff --git a/resources/topic-graph.mmd b/resources/topic-graph.mmd index 8c95512..00c0e9a 100644 --- a/resources/topic-graph.mmd +++ b/resources/topic-graph.mmd @@ -180,12 +180,16 @@ graph TD MON --> Tra[Tracing] Tra --> OPT[Open Tracing] Tra --> Jae[Jaegger] - SRE --> SVL[Serverless] - SVL --> SAM[Serverless Application Model] - SVL --> LBD[Lambda] - SRE --> SEC[Security] - SEC --> FIR[Firewall] - FIR --> WAF[Web Application Firewall] - SEC --> ENC[Encryption] - SEC --> SECMON[Monitoring] - SEC --> CERT[Certificates] + OPS --> SVL[Serverless] + SVL --> SAM[Serverless Application Model] + SVL --> LBD[Lambda] + SEC --> ENC[Encryption] + SEC --> SECMON[Monitoring] + SEC --> CERT[Certificates] + OPS --> SEC[Security] + SEC --> FIR[Firewall] + FIR --> WAF[Web Application Firewall] + OPS --> COST[Cost] + COST --> CloudCos[Cloud] + CloudCos --> FOps[FinOps] + FOps --> AWS diff --git a/resources/topic-graph.png b/resources/topic-graph.png index e31294007fba04d0c9162436d4683c7776247fce..499f9119664dea8f59b9686fbc0b877a69dfd5e1 100644 GIT binary patch literal 301573 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