Northmill

facebook.com/northmill.se

northmill.com

Ci/CD oN AWS

by

Wojtek Dąbrowski

Michał Górski

Damian Kleczko

Artur Fityka

Agenda

  1. Wprowadzenie do domeny
  2. Prezentacja architektury i aplikacji
  3. Usługi AWS
  4. Techniczne szczegóły architektury i aplikacji
  5. Konfiguracja kont
  6. Konfiguracja środowiska aplikacyjnego
  7. Przerwa
  8. Narzędzia CI/CD na AWS
  9. Demonstracja na żywym przykładzie
  10. Konfiguracja CI/CD na zbudowanym środowisku aplikacyjnym

Co budujemy?

Demo

Amazon S3

“Object storage built to store and retrieve any amount of data from anywhere.”

Pros

  • Performance, scalability, availability and durability

  • Security, compliance and audit capabilities

  • Cost-effective storage classes

Use cases

  • Backup and Storage

  • Application Hosting

  • Media Hosting

  • Software Delivery

AWS CloudFront

Amazon DynamoDB

“Run code without thinking about servers. Pay only for the compute time you consume.”

AWS Lambda (FaaS)

Principles of FaaS:

  • Complete management of servers

  • Invocation based billing

  • Event-driven and instantaneously scalable

Use cases:

  • Data processing

  • Backends

Amazon API Gateway

Amazon Simple Email Service

AWS CloudFormation

Lists

---
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
...

Dictionaries

# An employee record
martin:
    name: Martin D'vloper
    job: Developer
    skill: Elite

Mix

# Employee records
-  martin:
    name: Martin D'vloper
    job: Developer
    skills:
      - python
      - perl
      - pascal
-  tabitha:
    name: Tabitha Bitumen
    job: Developer
    skills:
      - lisp
      - fortran
      - erlang

Booleans

create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
uses_cvs: false

CloudFormation template

---
AWSTemplateFormatVersion: "version date"

Description:
  String

Metadata:
  template metadata

Parameters:
  set of parameters

Mappings:
  set of mappings

Conditions:
  set of conditions

Transform:
  set of transforms

Resources:
  set of resources

Outputs:
  set of outputs

CloudFormation template

---
AWSTemplateFormatVersion: "version date"

Description:
  String

Parameters:
  set of parameters

Transform:
  set of transforms

Resources:
  set of resources

Outputs:
  set of outputs

CloudFormation template

AWSTemplateFormatVersion: '2010-09-09'
Description: Creates an public S3 bucket
Resources:
  PublicBucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: PublicRead

Lab 0. konfiguracja konta AWS i narzędzi

aws configure

aws s3 ls

.NET Core SDK

dotnet --version

dotnet tool install -g Amazon.Lambda.Tools

AWS Lambda .NET

dotnet-lambda

Node.js

npm -v

Lab 1.1. Stworzenie S3 bucketa do deploymentu zasobów

  1. Znajdź templatkę bucket.yaml oraz skrypt deploy-bucket.bat w głównym katalogu.
  2. Uruchom skrypt w celu wdrożenia bucketa.

Lab 1.2. Utworzenie zasobów aplikacji frontend

  1. Wejdź do katalogu frontend.
  2. Znajdź templatkę static-website.yaml oraz skrypt deploy-stack.bat. 
  3. Uruchom skrypt wdrożenia środowiska aplikacji frontend.
  4. Skrypt będzie pracować w tle.

Lab 1.3. Utworzenie środowiska i  aplikacji backend

  1. Wejdź do katalogu backend\LoanOfferer.
  2. Znajdź templatkę template.yaml, skrypt deploy.bat oraz plik konfiguracyjny deploy-config.json.
  3. W pliku deploy-config.json uzupełnij informacje o Twoim środowisku.
  4. Uruchom skrypt wdrożenia środowiska i aplikacji backend.

Lab 1.4. Utworzenie aplikacji frontend

  1. Wejdź do katalogu gdzie został zainstalowany AWS CLI i znajdź plik aws-script.py.
    (C:\Program Files\Amazon\AWSCLI\bin\ lub podobna ścieżka).
  2. Dodaj w pliku linijkę kodu import encodings.idna.
  3. Wejdź do katalogu frontend\loan-offerer\src\environments.
  4. W pliku environment.ts uzupełnij informacje o Twoim środowisku.
  5. Wejdź do katalogu frontend\loan-offerer.
  6. Znajdź skrypt build-and-deploy-site.bat.
  7. Uzupełnij w skrypcie informacje o swoim środowisku.
  8. Uruchom skrypt w celu wdrożenia aplikacji frontend.

Lab 1.5. Konfiguracja Simple Email Service

  1. Wejdź do ekranu usługi Simple Email Service w portalu AWS.
  2. Zweryfikuj adres e-mail ci.cd.workshops@gmail.com.
  3. Zweryfikuj adres e-mail, którego użyjesz do złożenia wniosku.

Lab 1.6. Weryfikacja działania stworzonego środowiska

  1. Znajdź adres swojej strony w serwisie CloudFront w portalu AWS.
  2. Wejdź na adres strony i przejdź cały proces.

Przerwa

Cloud Formation

Code Pipeline

Code Build

Code Deploy

Lab 2.1. Stworzenie S3 bucketa do przechowywania artefaktów

Lab 2.2. Stworzenie Code Pipeline z rolą

Lab 2.3. Zbudowanie kodu źródłowego za pomocą Code Build

Lab 2.4. Deployment stacka CloudFormation

Lab 2.5. Dodanie testów w Code Pipeline

Lab 2.6. Frontend pipeline

Pricing

S3

Free tier: 5GB, 20,000 GET Requests; 2,000 PUT, COPY, POST, or LIST Requests; 15GB of Data Transfer Out each month for one year.

CloudFront

Free tier: 50 GB of Data Transfer Out and 2,000,000 HTTP/HTTPS Requests each month for one year.

API Gateway

Free tier: 1,000,000 API calls received for REST APIs, and 1,000,000 messages and 750,000 connection minutes for WebSocket APIs each month for one year.

Lambda

Free tier: 1,000,000 requests and 400,000 GB-seconds of compute time per month with no time limit.

DynamoDB

Free tier: None =(

Price depends on region, for example Frankfurt (eu-central-1):

Write request units: $1.525 per million write request units

Read request units: $0.305 per million read request units

CloudFormation

No charge*

CodePipeline

Free tier: 30 days after creation. Then, $1 per active pipeline per month. 

Cleanup!

Workshops vs production

Thank you!

CI/CD on AWS August 2019

By Wojciech Dąbrowski

CI/CD on AWS August 2019

  • 262