2. • Principal Member of Technical Staff
• Oracle Container Cloud Team
• Previous:
• 10 years building cloud products
• Enterprise/Startup experience
Karthik Gaekwad
@iteration1
3. • Community Involvement:
• Devopsdays Core Organizer
• Container Days Core Organizer
• Cloud Austin
• Docker Austin meetup
• The most popular docker helloworld
image: dockerhub.com/karthequian/
helloworld
Karthik Gaekwad
@iteration1
5. Overview
• The Evolution of DevOps
• Rise of Microservices, Containers applications
• What are they?
• Why should you care?
• What are they used for?
• What’s Oracle doing in this space?
6. Evolution of Devops
• Devops at least officially 8 years old
• Velocity 2009:
• 10 Deploys a day at flickr by John Allspaw, Paul
Hammond
• Agile Infrastructure openspace: Andrew Shaefer &
Patrick Debois
• 2009: 1st Devopsdays conference, Ghent
• Today: ~150 official devopsdays conference
9. Evolution of Devops
“System administrators participating in an
agile development process alongside
developers and using many of the same agile
techniques for their systems work.”
The Agile Admin Blog
Well Defined:
10. Evolution of Devops
• Training classes available:
• Devops Fundamental Course (Ernest Mueller,
James Wickett)
• Certifications available:
• AWS Certified Devops Engineer
• RedHat Certified Devops Architect
• Devops Foundations by the Devops institute
12. Containers & Microservices
• Containers and Micro services fit the
devops paradigm!
• Microservices allows developers to build
applications in modular way
• Allows for containerization
• Containerization allows for collaboration
between dev and ops
• Common language spoken between 2
teams in an org
14. Microservices
• Do one thing, and do it well (fine
grained)
• Independently built- common
language to communicate
• Independently deployable
• Fault tolerant and reliable
• Based on 12 factor app principles
15. 12 Factor App
•Use declarative formats for setup automation;
minimize time and cost for new developers joining
the project
•Clean contract with the underlying OS, offering
maximum portability between execution
environments;
•Suitable for deployment on modern cloud platforms
•Minimize divergence between development and
production- enabling continuous deployment
•Scale up without significant changes to tooling,
architecture, or development practices.
16. Relationship with containers
• Microservices and containers are a
great fit
• Single service on a container:
• Isolates service and makes it easy to
manage and debug
• Best practice for new architectures with
containers
• Consider building your architecture in
this manner
24. Portability
•Idea of writing once and running anywhere.
•As long as your application is Dockerized,
you can run it anywhere that has the
Docker Engine installed.
•Easy to change from 1 host to another.
•Flexibility to change underlying
infrastructure/operating systems etc.
•Change from 1 cloud provider to another.
25. Standardization
• Coding environments can be made consistent
from development ->staging->QA->production.
• Per environment configurations are fed in the
same way to each container which reduces
configuration issues.
• Time spent debugging environmental issues is
reduced drastically.
• Developers understand the production
environment better, which leads to better code
quality.
26. Scaling
•Containers take seconds to deploy.
•Scale up and down your infrastructure
is a lot faster than traditional
configuration management tools.
27. Continuous Delivery
•Docker API’s and Docker Hub make it
easy to build a deployment pipeline.
•After successful builds, a CI system
can build and push a Docker image to
the Hub/private Docker repo.
•Deploy new containers to desired
environment on a periodic basis/trigger
webhooks to deploy.
28. Dependency Management
• Dependency hell happens when:
• 2 running Java or Ruby applications that depend on
different versions of the same library…..
• How Docker can help:
• Isolate each application (along with it’s
dependencies) so that they can be loaded in their
own container.
• 1 container for 1 application or service (micro service
architecture)
31. Standardization
• Typical Pattern:
• Infrastructure/Applications run in containers.
• Every code push builds a new image for the
application.
• All environments uses the same command to
run the application:
• sudo docker run -d -p 7777:7777 -e
SE_DB=‘db_val’ karthequian/helloworld
32. Standardization Example
• Write service RFC (Request for Comments)
• Wait for feedback
• Scaffolding work + Develop service
• Wait for infrastructure team to write service scaffolding
• Wait for infrastructure team to provision services
• Deploy to development servers and test
• Deploy to production
• Monitor, iterate
• Uber (In the past)
33. Standardization Example
• Write service RFC (Request for Comments)
• Wait for feedback
• Scaffolding work + Develop service
• Build containers for service
• Wait for infrastructure team to deploy containers to
development servers
• Deploy to development servers and test
• Deploy to production
• Monitor, iterate
• Uber (With Docker)
34. Standardization Example
• Implementing Docker got rid of:
• Wait for the infrastructure team to write service
scaffolding
• Wait for infrastructure team to provision
services
• Ops doesn’t rely on playbooks, but rather, just
deploy existing container images
• No fear of one set of dependencies for one app,
breaking another app
• Uber (With Docker)
41. CI/CD Pipeline
create a
dockerfile
Commit code
to source
control
Build
triggered in
CI system
Build & Test
container
image
Push to
docker
registry
Webhook
trigger to
Orchestrator
42. CI/CD Pipeline
create a
dockerfile
Commit code
to source
control
Build
triggered in
CI system
Build & Test
container
image
Push to
docker
registry
Webhook
trigger to
Orchestrator
New
containers
online!
Completed CD!
43. Other Usecases
•Hosting Legacy Applications
•Running a PaaS/ Datacenter using Docker.
•EngineYard/Yandex/Baidu are great examples of
this.
•Containerizing hard to run applications is becoming
a frequent usecase.
•Single->multi tenant apps: http://flux7.com/docker/
51. Things we are doing at
Oracle
• Dockerfiles: https://github.com/oracle/docker-
images
• Weblogic: https://github.com/oracle/docker-
images/tree/master/OracleWebLogic/
dockerfiles/12.2.1.1
• DB: https://github.com/oracle/docker-images/
tree/master/OracleDatabase/dockerfiles
• Also for Dockerfiles for: Java, OpenJDK,
Coherance, MySQL etc
52. Things we are doing at
Oracle
• Container Registry
• Contains pre built Oracle images
• https://container-
registry.oracle.com/
• Docker 101 tutorial: https://
github.com/mikeraab/docker001
53. Things we are doing at
Oracle
• Container Products for Oracle Public Cloud:
• Oracle Application Container Cloud
• Great for Java/Node/PHP applications
• Oracle Container Service
• Bring your own containers
• Container Management solution
54. Things we are doing at
Oracle
• OCCS Stacks:
• ElasticSearch, Kibana, Logstash (ELK): https://github.com/
oracle/docker-images/tree/master/ContainerCloud/stacks/
elk
• Kafka microservices on OCCS: https://
community.oracle.com/community/cloud_computing/oracle-
cloud-developer-solutions/blog/2017/03/20/running-docker-
based-kafka-streams-microservices-on-oracle-container-
cloud
• https://community.oracle.com/community/cloud_computing/
infrastructure-as-a-service-iaas/oracle-container-cloud-service
55. Things we are doing at
Oracle
• Free $300 credits to try out all the
different services:
• https://cloud.oracle.com/en_US/tryit
56. Loved it? Hated it?
Send me feedback:
@iteration1
karthik.gaekwad@oracle.com
63. Serverless Applications
• First used to describe applications that
depended on 3rd party applications / services
(‘in the cloud’) to manage server-side logic and
state
• “Backend as a service applications”
64. Serverless Applications
Applications where some amount of server-side logic
is still written by the application developer
Unlike traditional architectures is run in stateless
compute containers that are event-triggered,
ephemeral (may only last for one invocation), and
fully managed by a 3rd party.
One way to think of this is “Functions as a service”.
AWS Lambda, Azure functions- most popular
implementations, but there are others.
68. • Way to code microservices does not change: 12
factor app mindset
• You still have to think of scaling in PaaS:
• “How many dynos do I need in Heroku to run this
app?”
• “How long does it take to scale from 2->4 servers?”
• Auto scaling on PaaS is great, but this is on a request
basis
• Forces developers to write cleaner, more efficient
code
Difference from PaaS?
69. Difference from containers?
• FaaS is typically built with containers…
• Once again..Scaling is the core difference.
• Managed, transparent, fine grained.
• Need to invest time in container platforms
to perform scaling actions.
• Prediction: may not be true a year from
now…
70. Serverless Use Cases
• Image Processing
• Data Transformation
• Log Analysis
• Authentication, Licensing