SlideShare a Scribd company logo
Development Process
Optimization Using
Docker
Mykhailo Brodskyi
Lead Software Engineer, Сonsultant
Agenda
1. Problem Overview
2. High-Level Architecture
3. Containerization vs Virtualization
4. Improved Development Process with Docker
5. Docker Security
6. RESTful API Standards
2
Development Process Optimization Using Docker. Based on a True Story
4
High-Level Architecture
High-Level Architecture
6
- Hardware
- Software
- VirtualDevice
Configuration
Monitoring Device Data
Collector
DB
Devices
LOG
Web Application
Containerization vs Virtualization
7
Desktop Virtualization
Type 2 hypervisor = with
host OS
Hardware
MacOS/Win
VirtualBox
App 1
Solaris
App 2
Win
Server Virtualization
Hardware
OVM/VMWare ESX/XEN
App 1
Solaris
App 2
Linux
App 3
Win
Immutable Docker container
-> Isolation
Hardware
Linux+Docker
JDK JDK
Open
JDK
JDK
WebLogic WebLogic Tomcat Jython
app.war
ejb.jar
app.war x.py
tools
Type 1 hypervisor
[Oracle] http://www.oracle.com/technetwork/articles/cloudcomp/munz-docker-occs-3585210.html
8
Development process BEFORE
3 – 4 weeks
9
Development process AFTER
1 – 2 weeks
Configuration – Docker Compose 10
version: '3'
services:
db:
image: postgres:9.2
ports:
- "5432:5432"
environment:
- DEBUG=false
- POSTGRES_USER=
- POSTGRES_PASSWORD=
volumes:
- ./dbdata/init:/docker-entrypoint-initdb.d/
- ./dbdata/sql:/db
app:
build: ./app
restart: always
image: app:latest
ports:
- "8082:8080"
- "8000:8000"
depends_on:
- "db"
command: ["/wait-for-db.sh", "db", "--",
"/usr/local/tomcat/bin/catalina.sh", "run"]
proxy:
image: "haproxy:latest"
ports:
- '443:443'
- '80:80'
volumes:
- ./haproxy_conf:/usr/local/etc/haproxy
links:
- app
Continue
- Define and run multi-container applications
- Single command to manage all services
- Great for dev, staging, and CI
Java Base Image
- Openjdk Image
- Alpine Image
- Oracle Container Registry
container-registry.oracle.com
- Zulu-openjdk Image
11
Docker in the Cloud
12
Docker Security
Docker security
- Use only trusted users
- Add extra layer of security
- SELinux (Security-Enhanced Linux)
- Limit memory and CPU resources
- Sign your images
14
RESTful API Standards
RESTful Architectural Constraints
- Client-server architecture
- Stateless
- Cache constraints
- Uniform Interface
- Layered System
16
[R. Felding - https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm, chapter 5]
Example 17
1. Must NOT have verbs in the
URLs
2. Must use plural rather than
singular nouns
3. Must keep URL simple and
intuitive
4. Must use HTTP operations
5. Must use concrete names rather
than abstract or group names
6. Must keep IDs (identifiers)
globally
7. Must avoid Using sequence
numbers for IDs
Thank you!
mykhailo.brodskyi@globallogic.com
Michael Brodskiy

More Related Content

PPTX
Ready! Steady! SpringBoot!
PDF
PUC SE Day 2019 - SpringBoot
PPTX
Introduction to spring boot
PDF
Spring Boot
PDF
Getting Reactive with Spring Framework 5.0’s GA release
PPTX
Spring boot
PDF
Spring Boot and Microservices
PPTX
Workshop Framework(J2EE/OSGi/RCP)
Ready! Steady! SpringBoot!
PUC SE Day 2019 - SpringBoot
Introduction to spring boot
Spring Boot
Getting Reactive with Spring Framework 5.0’s GA release
Spring boot
Spring Boot and Microservices
Workshop Framework(J2EE/OSGi/RCP)

What's hot (20)

PPT
Application depolyment
PPTX
Spring boot
PPTX
Java springboot microservice - Accenture Technology Meetup
PPTX
Introduction to ASP.NET 5
ODP
Xke spring boot
PDF
Workshop Guide: RESTful Java Web Application with Spring Boot
PPTX
Flask
PDF
Rediscovering Spring with Spring Boot(1)
PPT
Jenkins CI
PDF
White paper mbre_en
PDF
Microservices - java ee vs spring boot and spring cloud
PPTX
Spring Surf Development Tools
PPTX
Play framework : A Walkthrough
PDF
Spring Framework 5.2: Core Container Revisited
PPTX
Spring boot
PPTX
Building microservices sample application
PPTX
ODP
GlassFish v3 - Architecture
PDF
Next Generation Development Infrastructure: Maven, m2eclipse, Nexus & Hudson ...
Application depolyment
Spring boot
Java springboot microservice - Accenture Technology Meetup
Introduction to ASP.NET 5
Xke spring boot
Workshop Guide: RESTful Java Web Application with Spring Boot
Flask
Rediscovering Spring with Spring Boot(1)
Jenkins CI
White paper mbre_en
Microservices - java ee vs spring boot and spring cloud
Spring Surf Development Tools
Play framework : A Walkthrough
Spring Framework 5.2: Core Container Revisited
Spring boot
Building microservices sample application
GlassFish v3 - Architecture
Next Generation Development Infrastructure: Maven, m2eclipse, Nexus & Hudson ...
Ad

Similar to Development Process Optimization Using Docker. Based on a True Story (20)

PPTX
Containers: DevOp Enablers of Technical Solutions
PPTX
Docker & aPaaS: Enterprise Innovation and Trends for 2015
PDF
Docker bdxio
PDF
Containerization Strategy
PPTX
Development workflow guide for building docker apps
PPTX
Development workflow guide for building docker apps
PPTX
Introduction to Containers & Diving a little deeper into the benefits of Con...
PDF
Docker and OpenStack Boston Meetup
PDF
Demystifying Docker
PPTX
Demystifying Docker101
PPTX
This will show docker history details Ppt.pptx
PDF
ContainerDayVietnam2016: Dockerize a small business
PPTX
doitUNIT I - Docker-Containerization.pptx
ODP
DevAssistant, Docker and You
PDF
Docker Geneva Meetup - Introduction to Docker
PDF
2020-07-17 NOVASQL Presentation - Azure Kubernetes Service
PPTX
SS Introduction to Docker
PDF
Getting Started with MariaDB with Docker
PPTX
Develop with docker 2014 aug
PPTX
Getting started with docker
Containers: DevOp Enablers of Technical Solutions
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker bdxio
Containerization Strategy
Development workflow guide for building docker apps
Development workflow guide for building docker apps
Introduction to Containers & Diving a little deeper into the benefits of Con...
Docker and OpenStack Boston Meetup
Demystifying Docker
Demystifying Docker101
This will show docker history details Ppt.pptx
ContainerDayVietnam2016: Dockerize a small business
doitUNIT I - Docker-Containerization.pptx
DevAssistant, Docker and You
Docker Geneva Meetup - Introduction to Docker
2020-07-17 NOVASQL Presentation - Azure Kubernetes Service
SS Introduction to Docker
Getting Started with MariaDB with Docker
Develop with docker 2014 aug
Getting started with docker
Ad

More from GlobalLogic Ukraine (20)

PDF
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
PPTX
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
PDF
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
PDF
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
PDF
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
PDF
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
PPTX
Штучний інтелект як допомога в навчанні, а не замінник.pptx
PPTX
Задачі AI-розробника як застосовується штучний інтелект.pptx
PPTX
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
PDF
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
PDF
JavaScript Community Webinar #14 "Why Is Git Rebase?"
PDF
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
PPTX
Страх і сила помилок - IT Inside від GlobalLogic Education
PDF
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
PDF
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
PDF
“How to Secure Your Applications With a Keycloak?
PDF
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
PPTX
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
PDF
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
PDF
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
JavaScript Community Webinar #14 "Why Is Git Rebase?"
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
Страх і сила помилок - IT Inside від GlobalLogic Education
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
“How to Secure Your Applications With a Keycloak?
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
cuic standard and advanced reporting.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Empathic Computing: Creating Shared Understanding
20250228 LYD VKU AI Blended-Learning.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Network Security Unit 5.pdf for BCA BBA.
Reach Out and Touch Someone: Haptics and Empathic Computing
Per capita expenditure prediction using model stacking based on satellite ima...
“AI and Expert System Decision Support & Business Intelligence Systems”
A comparative analysis of optical character recognition models for extracting...
cuic standard and advanced reporting.pdf
Encapsulation theory and applications.pdf
Programs and apps: productivity, graphics, security and other tools
MIND Revenue Release Quarter 2 2025 Press Release
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
The Rise and Fall of 3GPP – Time for a Sabbatical?
Diabetes mellitus diagnosis method based random forest with bat algorithm
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
Empathic Computing: Creating Shared Understanding

Development Process Optimization Using Docker. Based on a True Story

  • 1. Development Process Optimization Using Docker Mykhailo Brodskyi Lead Software Engineer, Сonsultant
  • 2. Agenda 1. Problem Overview 2. High-Level Architecture 3. Containerization vs Virtualization 4. Improved Development Process with Docker 5. Docker Security 6. RESTful API Standards 2
  • 4. 4
  • 6. High-Level Architecture 6 - Hardware - Software - VirtualDevice Configuration Monitoring Device Data Collector DB Devices LOG Web Application
  • 7. Containerization vs Virtualization 7 Desktop Virtualization Type 2 hypervisor = with host OS Hardware MacOS/Win VirtualBox App 1 Solaris App 2 Win Server Virtualization Hardware OVM/VMWare ESX/XEN App 1 Solaris App 2 Linux App 3 Win Immutable Docker container -> Isolation Hardware Linux+Docker JDK JDK Open JDK JDK WebLogic WebLogic Tomcat Jython app.war ejb.jar app.war x.py tools Type 1 hypervisor [Oracle] http://www.oracle.com/technetwork/articles/cloudcomp/munz-docker-occs-3585210.html
  • 10. Configuration – Docker Compose 10 version: '3' services: db: image: postgres:9.2 ports: - "5432:5432" environment: - DEBUG=false - POSTGRES_USER= - POSTGRES_PASSWORD= volumes: - ./dbdata/init:/docker-entrypoint-initdb.d/ - ./dbdata/sql:/db app: build: ./app restart: always image: app:latest ports: - "8082:8080" - "8000:8000" depends_on: - "db" command: ["/wait-for-db.sh", "db", "--", "/usr/local/tomcat/bin/catalina.sh", "run"] proxy: image: "haproxy:latest" ports: - '443:443' - '80:80' volumes: - ./haproxy_conf:/usr/local/etc/haproxy links: - app Continue - Define and run multi-container applications - Single command to manage all services - Great for dev, staging, and CI
  • 11. Java Base Image - Openjdk Image - Alpine Image - Oracle Container Registry container-registry.oracle.com - Zulu-openjdk Image 11
  • 12. Docker in the Cloud 12
  • 14. Docker security - Use only trusted users - Add extra layer of security - SELinux (Security-Enhanced Linux) - Limit memory and CPU resources - Sign your images 14
  • 16. RESTful Architectural Constraints - Client-server architecture - Stateless - Cache constraints - Uniform Interface - Layered System 16 [R. Felding - https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm, chapter 5]
  • 17. Example 17 1. Must NOT have verbs in the URLs 2. Must use plural rather than singular nouns 3. Must keep URL simple and intuitive 4. Must use HTTP operations 5. Must use concrete names rather than abstract or group names 6. Must keep IDs (identifiers) globally 7. Must avoid Using sequence numbers for IDs