Sep 22, 2015

A modern application on Cloud - Part 1

I came from Java background and monolithic EAR, and time has shown me only changes. We are now in a totally different world and it seems companies like Amazon and Google runa parallel universe.
If we start local we made changes slowly one by one but literaly we made huge changes SOAP to REST, Monolithic to MicroServices, From Ant to DevOps, and From Waterfall to Agile. Cloud computing long time back and not long ago we realized without these PaaS's we are incomplete.
We exposed stateless REST services passing all 3 maturity models, and packaged as microservices with embedded servers, but we still need to deal with changing infrastructure. This is where Dockers came in.

Application Containers are a way bundling and running applications in an extremely portable way.
and services the application requires.
A developer can put an application or service inside a container, along with the runtime requisites. Developers can run a
container on a workstation, create an app in that container, save it in a container image,
and then deploy the app on any virtual or physical server running the same operating
system - and expect the application to work.
A container is a stripped-to-basics version of a Linux operating system. An image is software you load into a container. Containers are best for encapsulating microservice for portability and flexibility. Stateless Containers contain app, runtimes, libraries, etc. and can be moved from any machine - physical or virtual. Read More on OpenStack
 Docker popularized the idea of the container image.
They provide a straightforward way for
developers to package an application and its dependencies in a container image that can run on
any modern Linux.
 On right we see a command to create and run a docker. 
Things look simple when everything is stateless. We thrive to expose resources with REST Services and design API's to stimulate stateless flows. Container containes ready to deploy self contained applications, but we need a glue because in many cases containers do not run in isolation, they need network resources, remote API calls, exchange messages, etc. Cloudify is such an orchestration framework.

One example of docker is Netflix.
But even Netflix uses EC2.

A modern app is miminal set of below technologies -

But if we start with basics and assume we take step by step to move from shipping simple war's to dockers. 

The first step towards Cloud is Develop and package your application as usual and deploy it into Cloud, where Cloud is just like any Application Server instead small difference - Cloud provider will provide you commands or console to upload or move package and your application will be deployed on Application Server managed by Cloud provider. Cloud provider will also provide Database, MQ, etc connection facility. You need to provide the Database (DS, Username, password, url) or MQ(host, port, channel, Queue, etc.) connection details and Cloud provider will connect your application to them, and here you are managing your Database and MQ. This was most basic Cloud which just manages application, but benefit is you can scale your application dynamically, Cloud provider will manage Web Server, Load balancer, Security, Application Server, and your Application. 

A little more advance Cloud will provide App Servers, Database, and middleware. JBOSS OpenShift is this Cloud, which provides a Platform as a Service (PaaS). PaaS provides users with hardware and software required by application to run. 


No comments

Post a Comment


© Shift, ShEkUP, Shape, and Surprise | All rights reserved.
Blogger Template Crafted by pipdig