“bootify your app - from zero to hero
DESCRIPTION
Nowadays in the fast changing world we need to keep less and less time spent on routine activity and to spend more on creativity and bringing something new to move forward. This slides brings some trending ideas and approaches to deliver software in modern fashion, from Micro-services architecture, Containerisation, Automation, Continuous Integration/Deployment/Delivery. There is a demo application built with depicted approach https://github.com/webdizz/bootiful-appsTRANSCRIPT
“Bootify” Your
App
● SA at EPAM Systems
● primary skill is Java
● hands-on-coding with Groovy, Ruby
● trying to learn some Scala and Erlang
● passionate about agile, clean code and devops
Izzet Mustafayev@EPAM Systems@webdizz webdizz izzetmustafaievhttp://webdizz.name
agenda● what is this about?
● concepts behind
● tools
● demo
● summary
● q&a
Concepts behind
μServices Architecture
● Small (10-100 LOC)
Overview
● Small (10-100 LOC)
● Lightweight (run several per box)
Overview
● Small (10-100 LOC)
● Lightweight (run several per box)
● Takes strength of platform/language (polyglot)
Overview
● Small (10-100 LOC)
● Lightweight (run several per box)
● Takes strength of platform/language (polyglot)
● Independent (development/deployment)
Overview
● Small (10-100 LOC)
● Lightweight (run several per box)
● Takes strength of platform/language (polyglot)
● Independent (development/deployment)
● Stateless (everything persisted in DB)
Overview
● Small (10-100 LOC)
● Lightweight (run several per box)
● Takes strength of platform/language (polyglot)
● Independent (development/deployment)
● Stateless (everything persisted in DB)
● Monitored (health and business value)
Overview
Benefits
Toolset unchained
● Polyglot technology stack● Polyglot persistence● Frameworks● Thin transport
Scalability
● Independent provisioning ● Fine tuning ● Elasticity
Independence
● Development● Testing● Deployment● Reliability
Shortcomings
● More responsibility from Devs to support Ops
Shortcomings
● More responsibility from Devs to support Ops
● Polyglot infrastructure (if any)
Shortcomings
● More responsibility from Devs to support Ops
● Polyglot infrastructure (if any)
● Costs
Shortcomings
● More responsibility from Devs to support Ops
● Polyglot infrastructure (if any)
● Costs
● Orchestration
Shortcomings
Automation
Continuous I/D/D
Infrastructure Orchestration
● Environment as a code● Provisioning automation● Configuration automation
Immutable Infrastructure
● Build● Run ● Destroy
Disposability
● Container as deployment artifact● Environment agnostic● New version - new container● All dependencies built in
Containerisation
Tools
Gradle http://www.gradle.org/
Gradle - is build automation
evolved.
● Combines the power and flexibility of Ant
with the dependency management and
conventions of Maven
● Declarative way to describe build pipeline
● Powered by a Groovy DSL
● Free and open source
Spring Boot http://projects.spring.io/spring-boot/
Takes an opinionated view of
building production-ready Spring
applications.
● favors convention over configuration
● based on Spring
● designed to get you up and running ASAP
● production-ready features such as metrics,
health checks and externalized
configuration
Thymeleaf http://www.thymeleaf.org/
Thymeleaf - is an XML / XHTML /
HTML5 template engine
● Works both in web and non-web
environments
● Modular by dialects.
● Provides integration with Spring modules
● Easy-to-use, elegant syntax based on
attributes only
Ansible http://www.ansible.com/
Ansible - is an IT automation tool.
● System provisioning
● Software deployment
● Orchestration
● Declarative
● Agentless
● Decentralized
Docker https://www.docker.com/
Docker - An open platform for
distributed applications for
developers and sysadmins.
● Develop an app with any language and any
toolchain
● Ship the “Dockerized” app and
dependencies anywhere
● Scale, move between data centers, update
with zero downtime and more
Redis http://redis.io/
Redis - is an advanced key-value
cache and store
● open source - BSD licensed
● referred to as a data structure server (key-
value store)
● super fast read/writes
● provides messaging (queue/pubsub)
● has tons of clients
Demo
Summary
Summary● Speed wins in the marketplace
Summary● Speed wins in the marketplace
● Automation is a big deal
Summary● Speed wins in the marketplace
● Automation is a big deal
● Frameworks matter for rapid
delivery
Summary● Speed wins in the marketplace
● Automation is a big deal
● Frameworks matter for rapid
delivery
● Polyglot mindset
References● http://martinfowler.com/articles/microservices.html
● http://martinfowler.com/bliki/ImmutableServer.html
● http://goo.gl/8lKIYK
● http://projects.spring.io/spring-boot/
● https://www.docker.io/
● http://www.ansible.com/
● http://www.gradle.org/
● http://redis.io/
● https://github.com/webdizz/bootiful-apps
q&a
Izzet Mustafayev@EPAM Systems@webdizz webdizz izzetmustafaievhttp://webdizz.name