SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
© 2020 Akamai1
Set Up a
Development
Environment
in 5 Minutes
A step by step guide to setting up
a development environment with
Akamai Docker
© 2020 Akamai2
© 2020 Akamai3
Introduction
Agenda
1
Akamai Development
Environment Best Practices
2
Demos3
Interactive Quiz4
Q&A5
© 2020 Akamai4
Speakers
Javier Garza
Sr. Developer Advocate
Lukasz Czerpak
Sr. Enterprise Architect
Anthony Hogg
Sr. Enterprise Architect
© 2020 Akamai5
Introduction
© 2020 Akamai6
Akamai at a glance
A global platform
137 countries
1,700 networks
3,900 locations
260,000 servers
Generating
insights
100 million IP
addresses/day
1.3 billion device
interactions/day
7.5 petabytes
processed/day
Accelerating
daily traffic of
40 million hits/second
2+ trillion
deliveries/day
50+ Terabits/second
with 160+
Tbps Peaks
Supported by
7,000+ employees
60+ global offices
8 global 24/7
operations centers
Data Source: Akamai Intelligent Edge Platform. January 2020.
© 2020 Akamai7
Setting up an Akamai Developer Environment
Concepts
Continuous Integration
Automate build and test activities anytime
a user makes a code change
Continuous Delivery
Automate build, test, and release activities
anytime a user makes a code change
Continuous Deployment
Automate build, test, release, and deploy
activities anytime a user makes a code changeCONTINUOUS ANYTHING = AUTOMATION
© 2020 Akamai8
Prerequisites
API
Credentials
© 2020 Akamai9
Why Docker? $ time docker run --rm -it -v $HOME/.edgerc:/root/.edgerc:ro --name
akamai akamai/akamai-docker akamai --version
akamai version 1.1.5
docker run --rm -it -v $HOME/.edgerc:/root/.edgerc:ro --name akamai
akamai 0.04s user 0.02s system 3% cpu 1.464 total
$
Alpine
Node.js
akamai
Python 2
vim
Python 3
HTTPie
go
curl
pip
tree jdk8
nano
jq
bash
terraform openssl
wget
git
libffi
dep
npm
docker
CONTAINER
© 2020 Akamai10
Akamai
Development
Environment
Best Practices
© 2020 Akamai11
● Explained Goal
● Agreed on:
○ Scope
○ who does what
○ how to communicate
○ what technologies to use
(GitHub, Docker Hub)
○ Timelines
○ Next steps
● Assigned action items for next steps
● Integrated TravisCI (monthly build)
● Added:
○ .travis.yml
○ Automation scripts
○ Slack Build notifications
● Discussed Next Steps (image
variants)
● Pushed first image to Docker Hub
● Started with an existing file
● Collaborated to add:
○ Owner info
○ .gitignore
○ Copyright & License
○ Readme
● Enabled Auto-Deploy to Docker Hub
● Assigned action items for next steps
DevOps, Agile and Lean Methodologies
3 people, 3 countries, 3 working sessions
April 15April 9 April 17
AutomationDockerfileInitial Meeting
© 2020 Akamai12
Continuous Deployment Workflow
Dockerfile .travis.yml akamai/akamai-docker Build #12 of
akamai/akamai-docker@master
passed in 12 mins.
© 2020 Akamai13
© 2020 Akamai14
© 2020 Akamai15
© 2020 Akamai16
© 2020 Akamai17
Docker Image Size Optimizations
FROM alpine:3.11 as base
FROM base as builder
ARG AKAMAI_CLI_HOME=/cli
ENV AKAMAI_CLI_HOME=$AKAMAI_CLI_HOME GOROOT=/usr/lib/go GOPATH=/go GO111MODULE=auto PATH=$PATH:$GOBIN
RUN mkdir -p $AKAMAI_CLI_HOME/.akamai-cli
RUN apk add --no-cache docker git bash python2 python2-dev py2-pip python3 python3-dev npm wget jq openssl
openssl-dev curl nodejs build-base libffi libffi-dev vim nano util-linux go dep tree bind-tools
RUN go get -d github.com/akamai/cli && cd $GOPATH/src/github.com/akamai/cli && go mod init && go mod tidy && go
build -o /usr/local/bin/akamai
RUN pip install --upgrade pip && pip3 install --upgrade pip
RUN curl -s https://developer.akamai.com/cli/package-list.json -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS
X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0" | jq '.packages[].name' | sed s/"//g | xargs akamai install --force
RUN go get github.com/spf13/cast && akamai install cli-api-gateway
# https://github.com/akamai/cli-sandbox/issues/24
RUN akamai install sandbox && cd $AKAMAI_CLI_HOME/.akamai-cli/src/cli-sandbox/ && npm run build
RUN cd $AKAMAI_CLI_HOME/.akamai-cli/src/cli-edgeworkers/ && npm run build
WORKDIR /wheels
RUN pip install wheel
RUN pip wheel httpie httpie-edgegrid cffi
FROM base
ARG AKAMAI_CLI_HOME=/cli
© 2020 Akamai18
Docker Image Variants
#####################
# BUILD ARGS
#########
ARG BASE=akamai/base
#####################
# BUILDER
#########
FROM node:alpine as builder
RUN apk add --no-cache git npm 
# install cli-property from git
# (akamai install does not add the --production flag, which increases
# the footprint of the package since devDependencies are installed)
&& git clone --depth 1 https://github.com/akamai/cli-property.git 
&& cd cli-property 
&& npm install --production
#####################
# FINAL
#########
FROM $BASE
RUN apk add --no-cache nodejs 
&& mkdir -p /cli/.akamai-cli/src
COPY --from=builder /cli-property /cli/.akamai-cli/src/cli-property
ENTRYPOINT ["/cli/.akamai-cli/src/cli-property/bin/akamaiProperty"]
...
SHELL
360MB
APPSEC
51 MB
ADAPTIVE
ACCELERATION
40 MB
BASE
5 MB
PROPERTY
66 MB
...
© 2020 Akamai19
Demos
© 2020 Akamai20
Demos
1. Setting up the Development Environment
2. Web Operations
3. Media publishing
4. Security
5. DevOps
© 2020 Akamai21
Setting up the
Akamai Development
Environment
● Provision API Access
● Install Docker Desktop
● Install Akamai Development Environment
Demo
$ docker run -it -v $HOME/.edgerc:/root/.edgerc:ro --name akamai akamai/akamai-docker
Unable to find image 'akamai/akamai-docker:latest' locally
latest: Pulling from akamai/akamai-docker
cbdbe7a5bc2a: Pull complete
61bc2d5ce3bb: Pull complete
9c0484786baa: Pull complete
3f382dfdc1a6: Pull complete
4198704f8a89: Pull complete
accf7413945d: Pull complete
ee5d7f0cd1d3: Pull complete
8a416004e68b: Pull complete
3b4b5269d525: Pull complete
b7a187f231b9: Pull complete
ffc2604dc2ba: Pull complete
5b7a8ab46262: Pull complete
d329d6aeb9f5: Pull complete
f280ab158c66: Pull complete
56c836b880f2: Pull complete
c0f7981b2f07: Pull complete
Digest: sha256:c0ac240cf88f06337902dd13cb1e542af0321392c283f96fdc32c41578970eb7
Status: Downloaded newer image for akamai/akamai-docker:latest
___ __ _
/ | / /______ _____ ___ ____ _(_)
/ /| | / //_/ __ `/ __ `__ / __ `/ /
/ ___ |/ ,< / /_/ / / / / / / /_/ / /
/_/ |_/_/|_|__,_/_/ /_/ /_/__,_/_/
===============================================================
= Welcome to the Akamai Docker Image =
===============================================================
= Project page: =
= https://github.com/akamai/akamai-docker =
===============================================================
Akamai DevOps [~] >>
© 2020 Akamai22
Purging Content
● Understand Content Invalidation
● Purge Content
● Verify purge worked
Demo
$ docker run --rm -it --name akamai akamai/akamai-docker
___ __ _
/ | / /______ _____ ___ ____ _(_)
/ /| | / //_/ __ `/ __ `__ / __ `/ /
/ ___ |/ ,< / /_/ / / / / / / /_/ / /
/_/ |_/_/|_|__,_/_/ /_/ /_/__,_/_/
===============================================================
= Welcome to the Akamai Docker Image =
===============================================================
= Project page: =
= https://github.com/akamai/akamai-docker =
===============================================================
Akamai DevOps [~] >> akamai purge invalidate --tag product --staging
Purging...... [OK]
Purged 2 objects (ETA: 5 seconds)
Purge ID: b60b3da4-94ce-11ea-bb0d-fb1c0dd275d3
Akamai DevOps [~] >>
© 2020 Akamai23
{
"name": "GEO-protection-NL",
"children": [],
"behaviors": [
{
"name": "denyAccess",
"options": {
"reason": "not-NL",
"enabled": true
}
}
],
"criteria": [
{
"name": "path",
"options": {
"matchOperator": "MATCHES_ONE_OF",
"values": [
"/videos/nl/*"
],
"matchCaseSensitive": false
}
},
{
"name": "userLocation",
"options": {
"field": "COUNTRY",
"matchOperator": "IS_NOT_ONE_OF",
"countryValues": [
"NL"
],
"checkIps": "BOTH",
"useOnlyFirstXForwardedForIp": false
}
}
],
"criteriaMustSatisfy": "all"
}
Protect Media Assets
● Download property rules
● Add new functionality
● Activate new version
● Verify functionality
Demo
© 2020 Akamai24
Protecting against
SQL Injection attacks
● Execute SQL Injection attack
● Update and activate security
configuration
● Verify attack is deflected
Demo
© 2020 Akamai25
Akamai-as-code
● Review code in source-control
● Test new code in local sandbox
● Use Jenkins pipeline to build, test and
deploy code to the Akamai staging
network
Demo
© 2020 Akamai26
Let’s Recap
Webinar Resources
Summary Collaborate with us
github.com/akamai/akamai-docker
© 2020 Akamai27
Useful Links
● developer.akamai.com
● github.com/akamai/akamai-docker
● docker.com/get-started
● hub.docker.com/r/akamai/akamai-docker
● youtube.com/akamaideveloper
● https://developer.akamai.com/development-environment-webinar
© 2020 Akamai28

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Fluent 2018: Measuring What Matters
Fluent 2018: Measuring What MattersFluent 2018: Measuring What Matters
Fluent 2018: Measuring What Matters
 
Cloud APIs and Cloud Frameworks
Cloud APIs and Cloud FrameworksCloud APIs and Cloud Frameworks
Cloud APIs and Cloud Frameworks
 
Taylor Wicksell and Tom Gianos at SpringOne Platform 2019
Taylor Wicksell and Tom Gianos at SpringOne Platform 2019Taylor Wicksell and Tom Gianos at SpringOne Platform 2019
Taylor Wicksell and Tom Gianos at SpringOne Platform 2019
 
Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2
 
AWS Summit - Trends in Advanced Monitoring for AWS environments
AWS Summit - Trends in Advanced Monitoring for AWS environmentsAWS Summit - Trends in Advanced Monitoring for AWS environments
AWS Summit - Trends in Advanced Monitoring for AWS environments
 
Signal r core workshop - netconf
Signal r core workshop - netconf Signal r core workshop - netconf
Signal r core workshop - netconf
 
AWS Community Day Bangkok 2019 - Dev Ops Philosophy Increase Productivity
AWS Community Day Bangkok 2019 - Dev Ops Philosophy Increase ProductivityAWS Community Day Bangkok 2019 - Dev Ops Philosophy Increase Productivity
AWS Community Day Bangkok 2019 - Dev Ops Philosophy Increase Productivity
 
AWS Community Day Bangkok 2019 - DevOps Cost Reduction using Jenkins & AWS Sp...
AWS Community Day Bangkok 2019 - DevOps Cost Reduction using Jenkins & AWS Sp...AWS Community Day Bangkok 2019 - DevOps Cost Reduction using Jenkins & AWS Sp...
AWS Community Day Bangkok 2019 - DevOps Cost Reduction using Jenkins & AWS Sp...
 
Serverless with Firebase
Serverless with FirebaseServerless with Firebase
Serverless with Firebase
 
Building Voice Enabled Apps with AWS AppSync, GraphQL, & Amazon Alexa: Mobile...
Building Voice Enabled Apps with AWS AppSync, GraphQL, & Amazon Alexa: Mobile...Building Voice Enabled Apps with AWS AppSync, GraphQL, & Amazon Alexa: Mobile...
Building Voice Enabled Apps with AWS AppSync, GraphQL, & Amazon Alexa: Mobile...
 
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
 
Past, Present and Future of DevOps Infrastructure
Past, Present and Future of DevOps InfrastructurePast, Present and Future of DevOps Infrastructure
Past, Present and Future of DevOps Infrastructure
 
Build a Voice Enabled Modern App with GraphQL, AWS AppSync, and Amazon Alexa
Build a Voice Enabled Modern App with GraphQL, AWS AppSync, and Amazon AlexaBuild a Voice Enabled Modern App with GraphQL, AWS AppSync, and Amazon Alexa
Build a Voice Enabled Modern App with GraphQL, AWS AppSync, and Amazon Alexa
 
Cloud-based Performance & Web Load Testing
Cloud-based Performance & Web Load TestingCloud-based Performance & Web Load Testing
Cloud-based Performance & Web Load Testing
 
Building Mobile Apps with AWS Amplify
Building Mobile Apps with AWS AmplifyBuilding Mobile Apps with AWS Amplify
Building Mobile Apps with AWS Amplify
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
AWS Community Day Bangkok 2019 - Hello ClaudiaJS
AWS Community Day Bangkok 2019 - Hello ClaudiaJSAWS Community Day Bangkok 2019 - Hello ClaudiaJS
AWS Community Day Bangkok 2019 - Hello ClaudiaJS
 
EVOLVE'15 | Enhance | Norberto Leite | Effectively Scale and Operate AEM with...
EVOLVE'15 | Enhance | Norberto Leite | Effectively Scale and Operate AEM with...EVOLVE'15 | Enhance | Norberto Leite | Effectively Scale and Operate AEM with...
EVOLVE'15 | Enhance | Norberto Leite | Effectively Scale and Operate AEM with...
 
Gcp cloud certification training course
Gcp cloud certification training courseGcp cloud certification training course
Gcp cloud certification training course
 

Similar a Set up a Development Environment in 5 Minutes

Similar a Set up a Development Environment in 5 Minutes (20)

Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
 
Using Docker For Development
Using Docker For DevelopmentUsing Docker For Development
Using Docker For Development
 
Multi Stage Docker Build
Multi Stage Docker Build Multi Stage Docker Build
Multi Stage Docker Build
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Oracle Database 18c Docker.pdf
Oracle Database 18c Docker.pdfOracle Database 18c Docker.pdf
Oracle Database 18c Docker.pdf
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
 
How to Dockerize your Sitecore module
How to Dockerize your Sitecore moduleHow to Dockerize your Sitecore module
How to Dockerize your Sitecore module
 
Pp docker-swarm-doxlon-28th-march-2017
Pp docker-swarm-doxlon-28th-march-2017Pp docker-swarm-doxlon-28th-march-2017
Pp docker-swarm-doxlon-28th-march-2017
 
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
 
Code and Deploy Angular to the Cloud
Code and Deploy Angular to the CloudCode and Deploy Angular to the Cloud
Code and Deploy Angular to the Cloud
 
The Big Cloud native FaaS Lebowski
The Big Cloud native FaaS LebowskiThe Big Cloud native FaaS Lebowski
The Big Cloud native FaaS Lebowski
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
CCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in dockerCCCEU15 run cloudstack in docker
CCCEU15 run cloudstack in docker
 

Más de Akamai Developers & Admins

Más de Akamai Developers & Admins (20)

Mitigate Security Threats with SIEM
Mitigate Security Threats with SIEMMitigate Security Threats with SIEM
Mitigate Security Threats with SIEM
 
AWS re:invent: The secret to building and delivering amazing apps at scale
AWS re:invent: The secret to building and delivering amazing apps at scaleAWS re:invent: The secret to building and delivering amazing apps at scale
AWS re:invent: The secret to building and delivering amazing apps at scale
 
AWS re:invent talk: The secrets to building and delivering amazing apps at scale
AWS re:invent talk: The secrets to building and delivering amazing apps at scaleAWS re:invent talk: The secrets to building and delivering amazing apps at scale
AWS re:invent talk: The secrets to building and delivering amazing apps at scale
 
How the internet is reshaping our lives
How the internet is reshaping our livesHow the internet is reshaping our lives
How the internet is reshaping our lives
 
Velocity + Fluent 2018: API Performance
Velocity + Fluent 2018: API PerformanceVelocity + Fluent 2018: API Performance
Velocity + Fluent 2018: API Performance
 
Automation at the Edge
Automation at the EdgeAutomation at the Edge
Automation at the Edge
 
Akamai for Dev Ops Current Capabilities - Atlanta DevOps World Tour
Akamai for Dev Ops Current Capabilities - Atlanta DevOps World TourAkamai for Dev Ops Current Capabilities - Atlanta DevOps World Tour
Akamai for Dev Ops Current Capabilities - Atlanta DevOps World Tour
 
Getting Started with User and API Management Features
Getting Started with User and API Management FeaturesGetting Started with User and API Management Features
Getting Started with User and API Management Features
 
Akamai Developer General Session
Akamai Developer General SessionAkamai Developer General Session
Akamai Developer General Session
 
Akamai Admin General Session
Akamai Admin General SessionAkamai Admin General Session
Akamai Admin General Session
 
EdgeWorkers: Enabling Autonomous, Developer Friendly Programming at the Edge
EdgeWorkers: Enabling Autonomous, Developer Friendly Programming at the EdgeEdgeWorkers: Enabling Autonomous, Developer Friendly Programming at the Edge
EdgeWorkers: Enabling Autonomous, Developer Friendly Programming at the Edge
 
Optimizing your API to Perform at Scale
Optimizing your API to Perform at ScaleOptimizing your API to Perform at Scale
Optimizing your API to Perform at Scale
 
Provision Your Own Apple TV channel with MSL 4.x
Provision Your Own Apple TV channel with MSL 4.xProvision Your Own Apple TV channel with MSL 4.x
Provision Your Own Apple TV channel with MSL 4.x
 
Managing the IoT OTA via the Akamai OPEN APIs and Google Sheets
Managing the IoT OTA via the Akamai OPEN APIs and Google SheetsManaging the IoT OTA via the Akamai OPEN APIs and Google Sheets
Managing the IoT OTA via the Akamai OPEN APIs and Google Sheets
 
Integrating All Akamai Media Client Solutions with AMP
Integrating All Akamai Media Client Solutions with AMPIntegrating All Akamai Media Client Solutions with AMP
Integrating All Akamai Media Client Solutions with AMP
 
Cloud Delivery: The Path from Simple to Sophisticated
Cloud Delivery: The Path from Simple to SophisticatedCloud Delivery: The Path from Simple to Sophisticated
Cloud Delivery: The Path from Simple to Sophisticated
 
Making Virtual Reality Real: 4K VR/AR Encoding and Global Delivery
Making Virtual Reality Real: 4K VR/AR Encoding and Global DeliveryMaking Virtual Reality Real: 4K VR/AR Encoding and Global Delivery
Making Virtual Reality Real: 4K VR/AR Encoding and Global Delivery
 
The Road to Ultra Low Latency
The Road to Ultra Low LatencyThe Road to Ultra Low Latency
The Road to Ultra Low Latency
 
Tracking the Performance of the Web Over Time with the HTTP Archive
Tracking the Performance of the Web Over Time with the HTTP ArchiveTracking the Performance of the Web Over Time with the HTTP Archive
Tracking the Performance of the Web Over Time with the HTTP Archive
 
Luna and Third Party Tools for Troubleshooting Web Application Issues
Luna and Third Party Tools for Troubleshooting Web Application IssuesLuna and Third Party Tools for Troubleshooting Web Application Issues
Luna and Third Party Tools for Troubleshooting Web Application Issues
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Set up a Development Environment in 5 Minutes

  • 1. © 2020 Akamai1 Set Up a Development Environment in 5 Minutes A step by step guide to setting up a development environment with Akamai Docker
  • 3. © 2020 Akamai3 Introduction Agenda 1 Akamai Development Environment Best Practices 2 Demos3 Interactive Quiz4 Q&A5
  • 4. © 2020 Akamai4 Speakers Javier Garza Sr. Developer Advocate Lukasz Czerpak Sr. Enterprise Architect Anthony Hogg Sr. Enterprise Architect
  • 6. © 2020 Akamai6 Akamai at a glance A global platform 137 countries 1,700 networks 3,900 locations 260,000 servers Generating insights 100 million IP addresses/day 1.3 billion device interactions/day 7.5 petabytes processed/day Accelerating daily traffic of 40 million hits/second 2+ trillion deliveries/day 50+ Terabits/second with 160+ Tbps Peaks Supported by 7,000+ employees 60+ global offices 8 global 24/7 operations centers Data Source: Akamai Intelligent Edge Platform. January 2020.
  • 7. © 2020 Akamai7 Setting up an Akamai Developer Environment Concepts Continuous Integration Automate build and test activities anytime a user makes a code change Continuous Delivery Automate build, test, and release activities anytime a user makes a code change Continuous Deployment Automate build, test, release, and deploy activities anytime a user makes a code changeCONTINUOUS ANYTHING = AUTOMATION
  • 9. © 2020 Akamai9 Why Docker? $ time docker run --rm -it -v $HOME/.edgerc:/root/.edgerc:ro --name akamai akamai/akamai-docker akamai --version akamai version 1.1.5 docker run --rm -it -v $HOME/.edgerc:/root/.edgerc:ro --name akamai akamai 0.04s user 0.02s system 3% cpu 1.464 total $ Alpine Node.js akamai Python 2 vim Python 3 HTTPie go curl pip tree jdk8 nano jq bash terraform openssl wget git libffi dep npm docker CONTAINER
  • 11. © 2020 Akamai11 ● Explained Goal ● Agreed on: ○ Scope ○ who does what ○ how to communicate ○ what technologies to use (GitHub, Docker Hub) ○ Timelines ○ Next steps ● Assigned action items for next steps ● Integrated TravisCI (monthly build) ● Added: ○ .travis.yml ○ Automation scripts ○ Slack Build notifications ● Discussed Next Steps (image variants) ● Pushed first image to Docker Hub ● Started with an existing file ● Collaborated to add: ○ Owner info ○ .gitignore ○ Copyright & License ○ Readme ● Enabled Auto-Deploy to Docker Hub ● Assigned action items for next steps DevOps, Agile and Lean Methodologies 3 people, 3 countries, 3 working sessions April 15April 9 April 17 AutomationDockerfileInitial Meeting
  • 12. © 2020 Akamai12 Continuous Deployment Workflow Dockerfile .travis.yml akamai/akamai-docker Build #12 of akamai/akamai-docker@master passed in 12 mins.
  • 17. © 2020 Akamai17 Docker Image Size Optimizations FROM alpine:3.11 as base FROM base as builder ARG AKAMAI_CLI_HOME=/cli ENV AKAMAI_CLI_HOME=$AKAMAI_CLI_HOME GOROOT=/usr/lib/go GOPATH=/go GO111MODULE=auto PATH=$PATH:$GOBIN RUN mkdir -p $AKAMAI_CLI_HOME/.akamai-cli RUN apk add --no-cache docker git bash python2 python2-dev py2-pip python3 python3-dev npm wget jq openssl openssl-dev curl nodejs build-base libffi libffi-dev vim nano util-linux go dep tree bind-tools RUN go get -d github.com/akamai/cli && cd $GOPATH/src/github.com/akamai/cli && go mod init && go mod tidy && go build -o /usr/local/bin/akamai RUN pip install --upgrade pip && pip3 install --upgrade pip RUN curl -s https://developer.akamai.com/cli/package-list.json -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0" | jq '.packages[].name' | sed s/"//g | xargs akamai install --force RUN go get github.com/spf13/cast && akamai install cli-api-gateway # https://github.com/akamai/cli-sandbox/issues/24 RUN akamai install sandbox && cd $AKAMAI_CLI_HOME/.akamai-cli/src/cli-sandbox/ && npm run build RUN cd $AKAMAI_CLI_HOME/.akamai-cli/src/cli-edgeworkers/ && npm run build WORKDIR /wheels RUN pip install wheel RUN pip wheel httpie httpie-edgegrid cffi FROM base ARG AKAMAI_CLI_HOME=/cli
  • 18. © 2020 Akamai18 Docker Image Variants ##################### # BUILD ARGS ######### ARG BASE=akamai/base ##################### # BUILDER ######### FROM node:alpine as builder RUN apk add --no-cache git npm # install cli-property from git # (akamai install does not add the --production flag, which increases # the footprint of the package since devDependencies are installed) && git clone --depth 1 https://github.com/akamai/cli-property.git && cd cli-property && npm install --production ##################### # FINAL ######### FROM $BASE RUN apk add --no-cache nodejs && mkdir -p /cli/.akamai-cli/src COPY --from=builder /cli-property /cli/.akamai-cli/src/cli-property ENTRYPOINT ["/cli/.akamai-cli/src/cli-property/bin/akamaiProperty"] ... SHELL 360MB APPSEC 51 MB ADAPTIVE ACCELERATION 40 MB BASE 5 MB PROPERTY 66 MB ...
  • 20. © 2020 Akamai20 Demos 1. Setting up the Development Environment 2. Web Operations 3. Media publishing 4. Security 5. DevOps
  • 21. © 2020 Akamai21 Setting up the Akamai Development Environment ● Provision API Access ● Install Docker Desktop ● Install Akamai Development Environment Demo $ docker run -it -v $HOME/.edgerc:/root/.edgerc:ro --name akamai akamai/akamai-docker Unable to find image 'akamai/akamai-docker:latest' locally latest: Pulling from akamai/akamai-docker cbdbe7a5bc2a: Pull complete 61bc2d5ce3bb: Pull complete 9c0484786baa: Pull complete 3f382dfdc1a6: Pull complete 4198704f8a89: Pull complete accf7413945d: Pull complete ee5d7f0cd1d3: Pull complete 8a416004e68b: Pull complete 3b4b5269d525: Pull complete b7a187f231b9: Pull complete ffc2604dc2ba: Pull complete 5b7a8ab46262: Pull complete d329d6aeb9f5: Pull complete f280ab158c66: Pull complete 56c836b880f2: Pull complete c0f7981b2f07: Pull complete Digest: sha256:c0ac240cf88f06337902dd13cb1e542af0321392c283f96fdc32c41578970eb7 Status: Downloaded newer image for akamai/akamai-docker:latest ___ __ _ / | / /______ _____ ___ ____ _(_) / /| | / //_/ __ `/ __ `__ / __ `/ / / ___ |/ ,< / /_/ / / / / / / /_/ / / /_/ |_/_/|_|__,_/_/ /_/ /_/__,_/_/ =============================================================== = Welcome to the Akamai Docker Image = =============================================================== = Project page: = = https://github.com/akamai/akamai-docker = =============================================================== Akamai DevOps [~] >>
  • 22. © 2020 Akamai22 Purging Content ● Understand Content Invalidation ● Purge Content ● Verify purge worked Demo $ docker run --rm -it --name akamai akamai/akamai-docker ___ __ _ / | / /______ _____ ___ ____ _(_) / /| | / //_/ __ `/ __ `__ / __ `/ / / ___ |/ ,< / /_/ / / / / / / /_/ / / /_/ |_/_/|_|__,_/_/ /_/ /_/__,_/_/ =============================================================== = Welcome to the Akamai Docker Image = =============================================================== = Project page: = = https://github.com/akamai/akamai-docker = =============================================================== Akamai DevOps [~] >> akamai purge invalidate --tag product --staging Purging...... [OK] Purged 2 objects (ETA: 5 seconds) Purge ID: b60b3da4-94ce-11ea-bb0d-fb1c0dd275d3 Akamai DevOps [~] >>
  • 23. © 2020 Akamai23 { "name": "GEO-protection-NL", "children": [], "behaviors": [ { "name": "denyAccess", "options": { "reason": "not-NL", "enabled": true } } ], "criteria": [ { "name": "path", "options": { "matchOperator": "MATCHES_ONE_OF", "values": [ "/videos/nl/*" ], "matchCaseSensitive": false } }, { "name": "userLocation", "options": { "field": "COUNTRY", "matchOperator": "IS_NOT_ONE_OF", "countryValues": [ "NL" ], "checkIps": "BOTH", "useOnlyFirstXForwardedForIp": false } } ], "criteriaMustSatisfy": "all" } Protect Media Assets ● Download property rules ● Add new functionality ● Activate new version ● Verify functionality Demo
  • 24. © 2020 Akamai24 Protecting against SQL Injection attacks ● Execute SQL Injection attack ● Update and activate security configuration ● Verify attack is deflected Demo
  • 25. © 2020 Akamai25 Akamai-as-code ● Review code in source-control ● Test new code in local sandbox ● Use Jenkins pipeline to build, test and deploy code to the Akamai staging network Demo
  • 26. © 2020 Akamai26 Let’s Recap Webinar Resources Summary Collaborate with us github.com/akamai/akamai-docker
  • 27. © 2020 Akamai27 Useful Links ● developer.akamai.com ● github.com/akamai/akamai-docker ● docker.com/get-started ● hub.docker.com/r/akamai/akamai-docker ● youtube.com/akamaideveloper ● https://developer.akamai.com/development-environment-webinar