Skip to content

Latest commit

 

History

History
164 lines (135 loc) · 12 KB

technical.md

File metadata and controls

164 lines (135 loc) · 12 KB

Infrastructure as a Code (IaC)

There are some tools to automate your infrastructure:

  • Ansible - Orchestration engine to automate configuration
  • AWS CLI - AWS Command Line Interface
  • AWS CDK - AWS Cloud Development Kit
  • AWS Cloudformation - Language model to provision AWS resources
  • OpenTufu - Fork of Terraform that is open-source, community-driven, and managed by the Linux Foundation
  • Pulumi - Infrastructure as Code to provision and manage any cloud, infrastructure, or service
  • Terraform - Infrastructure as Code to provision and manage any cloud, infrastructure, or service

How to move infrastructure to code?

How to architect and choose the best solution?

  1. Figure out what the factors that are important to the organization are (it's rarely "the cheapest possible" or "latest hype" option)
    1. If it is an improvement to an existing product, think about the existing project stakeholders and how the change will affect them
    2. If it is a new project, think about how the product will be used in production
  2. Define and compare several approaches, follow KISS principle
  3. You might want to follow Well-Architected Framework but take it with a grain of salt, use YAGNI principle

Real World Examples

  1. Amazon’s This Is My Architecture
  2. AWS Solutions Implementations
  3. The Amazon Builders' Library
  4. AWS Cloud Adoption Framework
  5. Take Care About Costs
  6. AWS services in plain English
  7. AWS Well-Architected Lenses

Diagramming tools

  1. diagrams.net
  2. Lucidchart
  3. Cloudcraft
  4. mingrammer/diagrams

Creating Disaster Recovery plans

Disaster Recovery planning is hard and should be treated as a process, not one-time activity. Here are some steps that can help with DR planning:

  1. Collect initial requirements like SLA documents, ISMS documentation of your critical workloads

  2. Determine what is a disaster. It can be a natural disaster, failure of hardware or an attack and not only in cloud but also of your on-prem DC

  3. Determine Recovery Time Objective (RTO) and Recovery Point Objective (RPO) of your critical workloads

  4. Talk with business to balance costs vs risks of the DR plans

  5. If you have budget, you can look at commercial tools like CloudEndure

  6. Useful materials:

    1. AWS re:Invent 2019: Backup-and-restore and disaster-recovery solutions with AWS (STG208)
    2. 10 Tips for Developing an AWS Disaster Recovery Plan
    3. WA REL 9: How do you plan for disaster recovery?
  7. Use chaos engineering for automation of testing platform resiliency

DR and AWS services

Although some services provide good scenarios for DR planning, some are making such plans complicated. When a system requires a DR plans, you must analyze used services and how they will support the plans.

Examples of services that have good DR stories:

  1. DynamoDB - Allows backups of all data (and moderately easy restoration) as well as provides global tables (replication within seconds)
  2. EC2 - Same instance types are available across multiple regions, EBS volumes can be backed up and restored
  3. Route 53/CloudFront - Enables you to switch regions within seconds/minutes
  4. Kinesis - cross-region replication can be easily written

Examples of services that provide bad DR stories:

  1. Cognito - Service stores users within a region, authentication endpoints are region-bound, user replication or backups with password hashes are not available
  2. QLDB - Amazon QLDB does not support a backup and restore feature...

Software Development Kit (SDK)

AWS maintains SDK for many programming languages:

How to use cloud in highly regulated industries?

Very often organizations that operate on regulated data like health care information or financial data might be very reluctant to move to a public cloud. They can be biased with thinking a public cloud is less secure than an in-house Data Center, cloud will not reduce costs of development and operations and in overall, it won't enable the organization to have more products in their portfolio.

Public cloud provides services to a wide range of customers and provides solutions for companies that focus on preventive controls. The cloud helps to drive culture of innovation, comes with the widest set of tools for automation and in overall reduces costs of the technology teams.

Useful resources:

How to create AWS networks?

  1. Amazon VPC console wizard configurations
  2. AWS Client VPN - Scenarios and examples
  3. Transit Gateway - (Paul Casey)
  4. autovpn for on demand disposable OpenVPN endpoints
  5. AWS Systems Manager Session Manager/Bastillion to connect to EC2 instances

Serverless

Serverless Frameworks

There are some frameworks to help Serverless applications deploys:

Useful Serverless links

Serverless world is growing and there are many interesting articles and repositories:

AWS online challenges