Northmill
facebook.com/northmill.se
northmill.com
Ci/CD oN AWS
by
Wojtek Dąbrowski
Michał Górski
Damian Kleczko
Artur Fityka
Agenda
- Wprowadzenie do domeny
- Prezentacja architektury i aplikacji
- Usługi AWS
- Techniczne szczegóły architektury i aplikacji
- Konfiguracja kont
- Konfiguracja środowiska aplikacyjnego
- Przerwa
- Narzędzia CI/CD na AWS
- Demonstracja na żywym przykładzie
- 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
- Znajdź templatkę bucket.yaml oraz skrypt deploy-bucket.bat w głównym katalogu.
- Uruchom skrypt w celu wdrożenia bucketa.
Lab 1.2. Utworzenie zasobów aplikacji frontend
- Wejdź do katalogu frontend.
- Znajdź templatkę static-website.yaml oraz skrypt deploy-stack.bat.
- Uruchom skrypt wdrożenia środowiska aplikacji frontend.
- Skrypt będzie pracować w tle.
Lab 1.3. Utworzenie środowiska i aplikacji backend
- Wejdź do katalogu backend\LoanOfferer.
- Znajdź templatkę template.yaml, skrypt deploy.bat oraz plik konfiguracyjny deploy-config.json.
- W pliku deploy-config.json uzupełnij informacje o Twoim środowisku.
- Uruchom skrypt wdrożenia środowiska i aplikacji backend.
Lab 1.4. Utworzenie aplikacji frontend
- Wejdź do katalogu gdzie został zainstalowany AWS CLI i znajdź plik aws-script.py.
(C:\Program Files\Amazon\AWSCLI\bin\ lub podobna ścieżka). - Dodaj w pliku linijkę kodu import encodings.idna.
- Wejdź do katalogu frontend\loan-offerer\src\environments.
- W pliku environment.ts uzupełnij informacje o Twoim środowisku.
- Wejdź do katalogu frontend\loan-offerer.
- Znajdź skrypt build-and-deploy-site.bat.
- Uzupełnij w skrypcie informacje o swoim środowisku.
- Uruchom skrypt w celu wdrożenia aplikacji frontend.
Lab 1.5. Konfiguracja Simple Email Service
- Wejdź do ekranu usługi Simple Email Service w portalu AWS.
- Zweryfikuj adres e-mail ci.cd.workshops@gmail.com.
- Zweryfikuj adres e-mail, którego użyjesz do złożenia wniosku.
Lab 1.6. Weryfikacja działania stworzonego środowiska
- Znajdź adres swojej strony w serwisie CloudFront w portalu AWS.
- 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