serverlesswebsite+ publishing...

30
Serverless Website Publishing with AWS Code* Services Steffen Grunwald Solutions Architect, AWS October 27, 2016

Upload: others

Post on 30-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Serverless Website  Publishingwith  AWS  Code*  Services

Steffen  Grunwald

Solutions  Architect,  AWS

October  27,  2016

Page 2: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Software  Delivery  Models  evolved

Page 3: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

What  do  you  need  to  move  fast?

Automate  provisioning  of  all  environments  and  services

Automate  the  deploymentof  application  versions

Orchestrate  the  whole  process

Re-­use  services,Architect  for  re-­usability

Measure  software  qualityAutomate  builds  and  tests

Page 4: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Release  processes  levels

Source Build Test Production

Continuous  integration

Continuous  delivery

Continuous  deployment

Page 5: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Continuous  Delivery  Benefits

Improve  developer  productivity

Find  and  address  bugs  quickly

Deliver  updates  fasterAutomate  the  software  release  process

Page 6: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Continuous  delivery  service  for  fast  and  reliable  application  updates

Model  and  visualize  your  software  release  process

Builds,  tests,  and  deploys  your  code  every  time  there  is  a  code  change

Integrates  with  3rd party  tools  and  AWS

AWS  CodePipeline

Page 7: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

AWS  CodePipeline Benefits

Improved  quality

Rapid  delivery Get  started  fast

Configurable  workflow Easy  to  integrate

Page 8: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic  Beanstalk

PipelineStage

Action

Transition

CodePipelineMyApplication

Page 9: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic  Beanstalk

NotifyDevelopersLambda

CodePipelineMyApplication

Parallel  actions

Page 10: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic  Beanstalk

NotifyDevelopersLambda

TestAPIRunscope

CodePipelineMyApplication

Sequential  actions

Page 11: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic  Beanstalk

CodePipelineMyApplication

Artifacts  are  passed  via  S3

Page 12: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Demo:  Publishing  Workflow  on  AWS

Editing  Markdown Versioning Build Publish

https://c9.io/ AWS  CodeCommit Amazon  S3https://jekyllrb.com/

Page 13: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Pipeline  Design

Commit/Push

https://c9.io/ AWS  CodeCommit Amazon  S3https://jekyllrb.com/

Page 14: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Pipeline  Design  -­‐ add  Approval  Stage Re-­‐use  Functionwith  differentparameters

Page 15: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

150  LoC  of  Custom  Job  Worker  Code  at  a  Glance

loop:poll_for_jobs

acknowledge_jobtry:

download site sourcerun Jekyllupload build siteput_job_success

catch:put_job_failure

Page 16: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Deploy  Applications  with  AWS  CodeDeploy

• Automates  code  deployments  to  any  instance

• Handles  the  complexity  of  updating  your  applications

• Avoid  downtime  during  application  deployment

• Deploy  to  Amazon  EC2  or  on-­‐premises  servers,  in  any  language  and  on  any  operating  system

• Integrates  with  3rd party  tools  and  AWS

Page 17: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Automate  deployment  with  Built-­‐In  Actions

Watches  for  code  changes

Triggers  CodeDeploydeployment

Page 18: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

appspec.ymlversion: 0.0os: linuxfiles:- source: appdestination: /home/ec2-user/app

- source: scripts/siteBuilder.confdestination: /etc/init

permissions:- object: /home/ec2-user/appowner: ec2-usergroup: ec2-user

hooks:ApplicationStop:- location: deploy-hooks/stop.sh

AfterInstall:- location: deploy-hooks/reloadServices.sh- location: deploy-hooks/installBundles.shrunas: ec2-user

ApplicationStart:- location: deploy-hooks/start.sh

Page 19: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

appspec.ymlversion: 0.0os: linuxfiles:- source: appdestination: /home/ec2-user/app

- source: scripts/siteBuilder.confdestination: /etc/init

permissions:- object: /home/ec2-user/appowner: ec2-usergroup: ec2-user

hooks:ApplicationStop:- location: deploy-hooks/stop.sh

AfterInstall:- location: deploy-hooks/reloadServices.sh- location: deploy-hooks/installBundles.shrunas: ec2-user

ApplicationStart:- location: deploy-hooks/start.sh

Copy  files  to  system-­‐ Application

-­‐ Upstart  Config

Set  file  permissions

Execute  scripts  onapplication  lifecycle

events

Page 20: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

AWS  service  integrationsSource Invoke  Logic             Deploy

AWS  Elastic  BeanstalkAWS  CodeDeployAWS  OpsWorks

Amazon  S3AWS  CodeCommit

AWS  Lambda

Page 21: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

We  have  a  strong  partner  list,  and  it’s  growingSource Build Test Deploy

Page 22: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Make  Jekyll  Serverless

We  know:• Jekyll  is  written  in  Ruby• Ruby*  runs  on  Java• Java  runs  on  AWS  Lambda

Deduction:Jekyll*  runs  on  AWS  Lambda

*some

Page 23: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Packaging  Jekyll

Java  AWS  Lambda  Handler

JRuby Complete  Distribution

Jekyll’s  and  Dependencies’  

Gems

Jekyll  Start  Ruby  Script

Uber  JAR

Page 24: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Packaging  Jekyll

Java  AWS  Lambda  Handler

JRuby Complete  Distribution

Jekyll’s  and  Dependencies’  

Gems

Jekyll  Start  Ruby  Script

Uber  JAR

Maven  Build

dependency run  jruby install  @generate  resources

src/main/java src/main/resources

src/assembly

Page 25: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Provision  with  AWS  CloudFormation

• Specify  a  collection  of  related  AWS  resources  in  a  declarative  way

• Put  the  configuration  to  version  control

• Provision  and  update  your  infrastructure  in  a  predictable  fashion:• Additional  Test  Environments• Complete  Pipelines

Page 26: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Scaffolding  with  AWS  CloudFormation Template

• Use  a  parameterized  CloudFormation template• Create  a  stack  of  resources  from  scratch:  pipeline,  

S3  buckets,  IAM  roles,  AWS  Lambda  functions,  policies,  etc.

Create  a  service  adhering  to  best  practices  in  minutes!

Page 27: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

AWS  CloudFormation Example  w/  Parameter(Excerpt)BuiltSiteCustomAction:Type:  "AWS::CodePipeline::CustomActionType"Properties:Category:  "Build"Provider:Fn::Join:-­‐ ""-­‐ -­‐ Ref:  AWS::StackName-­‐ "-­‐BuildActn"

Version:  1

Page 28: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Summary• Infrastructure  and  application  can  be  provisioned  in  

a  fully  automated  fashion  and  allows  for  a  fast  start• AWS  CodePipeline is  very  versatile  and  allows  

integration  of  all  almost  services  and  tools• Going  all  serverless builds  a  fully  cost  aware  

architecture

Page 29: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Start  now  and  benefit  from  AWS  Free  TierPay  for  what  you  use!

AWS  services  used  are  part  of  the  AWS  Free  Tier:-­‐ AWS  CodePipeline-­‐ AWS  CodeCommit-­‐ AWS  Lambda-­‐ Amazon  Simple  Storage  Service  (S3)See  Terms  at  https://aws.amazon.com/free

Page 30: ServerlessWebsite+ Publishing …aws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...2016/10/27  · with+AWS+Code*+Services Steffen&Grunwald Solutions&Architect,AWS October&27,2016

Thank  you!