building big architectures by ramit surana

Post on 20-Jan-2017

79 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

#XPIndia2016

Building Big Architecture

Ramit Surana@ramitsuranaramitsurana@gmail.com

#XPIndia2016

Agenda• Why is this important ?

• Defining SOA

• What are Monoliths ?

• What are Microservices ?

• About Docker

• Principles of Microservices

• Refactoring

• 12 Factor App

• Conway's Law

• Coupling

• Case Studies

#XPIndia2016

About Me

• Open Source Guy

• Contributor to Docker, CoreOS and Kubernetes community.

• Open Source community speaker.

• Contact me:

ramitsurana@gmail.com

#XPIndia2016

Important Sayings

#XPIndia2016

Why is this important ?

#XPIndia2016

SOA(Service Oriented Architecture)

Architectural pattern in computer software design in which application components provide services to other components via a communications protocol, typically over a network.

#XPIndia2016

Before and After SOA

#XPIndia2016

SOA Mythology

#XPIndia2016

Overview of Monolith Architecture

#XPIndia2016

Monolithics

• Single Runtime

• Single Codebase

• Layered architecture

• Initialization of the system may be tricky or laborious.

•Change to the control flow is impossible.

•An application where all of the logic runs in a single app server.

#XPIndia2016

Microservices

#XPIndia2016

Overview of Microservices Architecture

#XPIndia2016

Microservices

• Loosely coupled service oriented architecture with bounded contexts.

•Design for failure

•Decentralized Governance

•Decentralized Data Management.

•Componentization via Services

#XPIndia2016

Microservices vs Monolithic

#XPIndia2016

About Docker

•Open platform for developers and sysadmins to build, ship, and run distributed applications.

•Docker enables apps to be quickly assembled from components.

• It eliminates the friction between development, QA and production environments.

#XPIndia2016

The Problem

#XPIndia2016

Using Monolithic

Developer

Developer

Developer

Developer

Developer

Java

Java

Java

Java

Java

Production

Release Cycles

#XPIndia2016

Using Microservices

Developer

Developer

Developer

Developer

Developer

Redis

Golang

NodeJS

Java

Php

Release Cycles

Production

#XPIndia2016

Using Docker Hub with Microservices

Developer

Developer

Developer

Developer

Developer

Configure

Configure

Configure

Configure

Configure

Release Cycles

Production

DockerHub

#XPIndia2016

Using PaaS

Developer

Developer

Developer

Developer

Developer

Configure

Configure

Configure

Configure

Configure

Release Cycles

Production

DockerHub

Orchestration Engine

PaaS

#XPIndia2016

Principles Governing Micro services

#XPIndia2016

Coupling

•Tight coupling leads to huge, monolithic systems that are difficult to maintain or improve upon

• If changing one module in a program requires changing another module, then coupling exists.

#XPIndia2016

12 Factor app

#XPIndia2016

Conway's Law

"Any organization that designs a system … will inevitably produce a design whose structure is a

copy of the organization's communication structure."

#XPIndia2016

Refactoring

•Process to change the existing code without changing its external behavior.

•Refactoring improves nonfunctional attributes of the software.

#XPIndia2016

Comparison of performance

#XPIndia2016

But What about DevOps ?

#XPIndia2016

DevOps

•DevOps is a company culture where the Developers movement or practice emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals.

• It helps in automation and making delivery fast.

#XPIndia2016

Case Studies

#XPIndia2016

How Netflix does it?

#XPIndia2016

How Twitter do it?

#XPIndia2016

How Gilt does it?

#XPIndia2016

How does Google does it?

#XPIndia2016

Any Questions?

Thank YouMay you have an awesome day

ahead !

top related