Lekcja 1 – Continuous Delivery pod chmurową pierzynką

Witaj, to będzie pierwszy post techniczny i pokażę Ci jak dzięki serwisom w chmurze zbudować flow Continuous Delivery, środowisko z prawdziwego zdarzenia! Serio, w chmurze Amazon AWS.

Zdecydowałem  się na ten cykl, ponieważ nie znalazłem gotowego rozwiązania w internecie, które pokryłoby całe flow dla aplikacji enterprise na Spring Boot’cie.

Przepis na: Continuous Delivery

Sładniki:

  1. Kod w GitHub (Spring Boot app)
  2. TravisCI
  3. AWS EC2
  4. AWS S3
  5. AWS CodeDeploy

Przepis: Zamieszać siedem razy zgodnie z ruchem wskazówek zegara,  przykryć i wstawić do piekarnika … żartuję, to będzie trochę trudniejsze.


1. GitHub

Kod aplikacji z konfiguracjami znajdziesz na moim GitHub’ie. Do szczegółowego opisu kluczowych fragmentów konfiguracji przejdę w kolejnych lekcjach

https://github.com/jbogacz/CodeDeployDemo


2. TravisCI

https://travis-ci.org/

Poznałem tego Pana jakiś czas temu gdy potrzebowałem czegoś do Continuous Integration na wzór Jenkins’a (https://jenkins.io/), czegoś co weźmie mój kod z GitHub’a, uruchomi testy i za pomocą Maven’a zbuduje projekt. TravisCI nadaje się do tego idealnie, po każdym „commicie” odpalany jest Continuous Build, który sprawdza czy nasz kod kompiluje się, uruchamia testy, zbuduje paczkę i wyśle notyfikację ze statusem.

Nasz plik konfiguracyjny .travis.yml, omówię go później:

##
## TravisCI build and deploy to AWS
##
language: java
jdk: oraclejdk8
cache: bundler
script:
  - ./mvnw package -DskipTests

before_deploy:
  - mkdir -p dpl_cd_upload
  - zip -j package.zip target/hello-0.0.1-SNAPSHOT.jar deployment/*
  - cp package.zip dpl_cd_upload/package.zip
deploy:
  - provider: s3
    access_key_id: *
    secret_access_key: &1
      secure: *
    local_dir: dpl_cd_upload
    skip_cleanup: true
    on: &2
      repo: jbogacz/CodeDeployDemo
    region: eu-west-1
    bucket: codedeploy-demo-backet
  - provider: codedeploy
    access_key_id: *
    secret_access_key: *1
    region: eu-west-1
    bucket: codedeploy-demo-backet
    key: package.zip
    bundle_type: zip
    application: CodeDeployDemo
    deployment_group: CodeDeployDemoGroup
    on: *2

notifications:
  email: jakub.bogacz@jeesoft.pl

 


3. AWS Elastic Compute Cloud (EC2)

To chyba najczęściej używane serwis od Amazona. Jak pisze Amazon to bezpieczny i łatwo skalowany serwis pozwalający na przetwarzanie w chmurze – my użyjemy go jako serwera z preinstalowanym systemem UNIX od Amazona, jedyne co dodatkowo zrobimy to doinstalujemy agenta, które będzie rozmawiać z serwisem CodeDeploy. Piękne jest to, że w przeciągu kilkunastu sekund uzyskujemy dostęp do serwera z zainstalowanym UNIX’em i publicznym IP do którego możemy połączyć się jak do zwykłego poczciwego blaszaka z szafy w serwerowni – dla osoby, która puka po ssh’a to że serwis jest w chmurze jest absolutnie przezroczyste 🙂


4. AWS Simple Storage Service (S3)

To drugi co to częstości wykorzystywania po EC2 serwis od Amazona. Jest to storage dla danych w chmurze, jest on obiektowy więc możemy zapisać w nim dowolny typ danych. My wykorzystamy go w naszym flow jako miejsce pośrednie, w którym TravisCI zapisze zbudowaną aplikację, serwis CodeDeploy weźmie tą paczkę i wyśle do EC2 aby tam agent rozpakował ją i uruchomił naszą prostą aplikację.


5. AWS CodeDeploy

Jak sama nazwa mówi, pozwala na deployment aplikacji napisanych w dowolnym języku. Każda paczka z aplikacją potrzebuje skryptu konfiguracyjnego, który pozwala na przygotowanie do startu, start, stop i posprzątanie po aplikacji. Ten gość sprawił mi najwięcej trudności, ale Tobie nie sprawi, obiecuję 🙂 Dużą, część czasu poświęciłem na zmapowanie po stronie Travis’a na konfigurację w S3 i CodeDeploy, wymyślenie sposobu jak zapakować aplikację SpringBoot w tzw. „fat jar” razem ze skryptami dla CodeDeploy, odebrać na serwerze EC2, uruchomić skrypty do deploymentu i uruchomić apkę

 

Na koniec załączam Ci link to prezentacji od 2nd watch z zestawieniem 30 najpopularniejszych serwisów AWS w 2016 roku http://2ndwatch.com/wp-content/uploads/2017/02/Top-30-Most-Popular-AWS-Products_2016.pdf

 

One comment on “Lekcja 1 – Continuous Delivery pod chmurową pierzynką

  1. Zapowiada się świetnie Jakubie 🙂 czekam na kolejne wpisy. Chmury to przyszłość więc doskonale, że ktoś klarownie poprowadzi ścieżkę nauki tych technologii.

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *