Designing a Reliable Software Factory for the Cloud

35
DESIGNING A RELIABLE SOFTWARE FACTORY FOR THE İBRAHİM GÜRSES

Transcript of Designing a Reliable Software Factory for the Cloud

Page 1: Designing a Reliable Software Factory for the Cloud

DESIGNING A RELIABLE SOFTWARE FACTORY FOR THE

İBRAHİM GÜRSES

Page 2: Designing a Reliable Software Factory for the Cloud

WHO AM I?

▸Graduated From Bilkent University in 2011

▸Vakıfbank, Gate Elektronik, T2 Yazılım, OpsGenie,

Hazelcast, Arçelik.

▸Currently working on IoT infrastructure @Arçelik

Page 3: Designing a Reliable Software Factory for the Cloud

AGENDA

▸ Software Factory

▸ DevOps

▸ Serverless

▸ Development Pipeline

▸ Q&A & Demo

Page 4: Designing a Reliable Software Factory for the Cloud

SERVERLESS COMPUTING WITH AWS

HTTPS://WWW.YOUTUBE.COM/WATCH?V=LEPQXTOWDJS

Page 5: Designing a Reliable Software Factory for the Cloud

DEVOPS CULTURE AND PRACTICES SUNUMU

HTTPS://WWW.YOUTUBE.COM/WATCH?V=D3E0XJCRWCE

Page 6: Designing a Reliable Software Factory for the Cloud

GARTNER’S HYPE CYCLE

Page 7: Designing a Reliable Software Factory for the Cloud

MARTIN FOWLER’S TECHNICAL DEBT QUADRANT

Page 8: Designing a Reliable Software Factory for the Cloud

DEVELOPMENT BEFORE DEVOPS▸ DevOps is a new term that primarily focuses

on improved collaboration, communication,

and integration between software developers

and IT operations. It’s an umbrella term that

some describe as a philosophy, cultural

change, and paradigm shift. Figure shows

developer throwing code "over the wall"

Historically many organisations have been

vertically structured with poor integration

among development, infrastructure, security

and support teams. Frequently the groups

report into different organisational structures

with different corporate goals and

philosophies.

Page 9: Designing a Reliable Software Factory for the Cloud

FILLING THE GAPS

Page 10: Designing a Reliable Software Factory for the Cloud

DEVOPS CONCEPTS BEFORE FAILURE

▸Chaos Monkey

▸Blue/Green - Canary Deployment

▸Dependency Injection

▸Andon Cords

▸The Cloud

▸Embedded Teams

Page 11: Designing a Reliable Software Factory for the Cloud

DEVOPS CONCEPTS AFTER FAILURE

▸Blameless Postmortems

▸Public Status Page

▸Developers on Call

▸ Incident Command System

Page 12: Designing a Reliable Software Factory for the Cloud

CAMS MODEL

▸Culture

▸Automation

▸Measurement

▸Sharing

Page 13: Designing a Reliable Software Factory for the Cloud

KAIZEN’S GUIDES

▸Good processes bring good results

▸Go see for yourself (gemba)

▸Speak with data, manage by facts

▸Take action to contain and correct root causes

▸Work as a team

▸Kaizen is everybody’s business

Page 14: Designing a Reliable Software Factory for the Cloud

SOFTWARE FACTORY

Page 15: Designing a Reliable Software Factory for the Cloud

LEVELS OF MATURITY OF DEVOPS PROCESS

Page 16: Designing a Reliable Software Factory for the Cloud

WHERE TO BEGIN?

Page 17: Designing a Reliable Software Factory for the Cloud

WHAT WE DO?

Page 18: Designing a Reliable Software Factory for the Cloud

WHAT WE DO?

Page 19: Designing a Reliable Software Factory for the Cloud

CLOUD APPLICATION DELIVERY MODELS

▸ IaaS (Infrastructure as a Service) - Host

▸PaaS (Platform as a Service) - Build

▸SaaS (Software as a Service) - Consume

Page 20: Designing a Reliable Software Factory for the Cloud
Page 21: Designing a Reliable Software Factory for the Cloud
Page 22: Designing a Reliable Software Factory for the Cloud

PETS VS CATTLE

Page 23: Designing a Reliable Software Factory for the Cloud

MICROSERVICE

▸ Is there a formal definition for microservice architecture ?

▸No

▸What is the Difference between monolithic and micro service

styles?

▸Easy to maintain

▸Deployment

▸Scaling

Page 24: Designing a Reliable Software Factory for the Cloud
Page 25: Designing a Reliable Software Factory for the Cloud
Page 26: Designing a Reliable Software Factory for the Cloud
Page 27: Designing a Reliable Software Factory for the Cloud

DON’T !!!

Page 28: Designing a Reliable Software Factory for the Cloud

ADVANTAGES

▸Can use right tool for the job

▸Can replace entire components easier

▸Can scale specific components

▸Super cloud friendly

▸Will push you DevOps

Page 29: Designing a Reliable Software Factory for the Cloud

CHALLENGES

▸Distributed/versioned configuration

▸Auto configurations and refresh on runtime

▸New services can auto register at startup

▸Service registration and discovery

▸Centralised log management

▸Collects and visualise log events from distributed processes

▸Circuit Breaker (Bulk Heading)

▸Prevent problems with chain of failures

▸Security

Page 30: Designing a Reliable Software Factory for the Cloud

DISTRIBUTED SYSTEMS

Page 31: Designing a Reliable Software Factory for the Cloud

SUN’S FALLACIES OF DISTRIBUTED COMPUTING

▸The network is reliable.

▸Latency is zero.

▸Bandwidth is infinite.

▸The network is secure.

▸Topology doesn't change.

▸There is one administrator.

▸Transport cost is zero.

▸The network is homogeneous.

Page 32: Designing a Reliable Software Factory for the Cloud

ANY ORGANIZATION THAT DESIGNS A SYSTEM WILL PRODUCE A DESIGN WHOSE STRUCTURE IS A COPY OF THE ORGANIZATION’S COMMUNICATION STRUCTURE. Melvin Conway

CONWAY’S LAW

Page 33: Designing a Reliable Software Factory for the Cloud

DEMO

Page 34: Designing a Reliable Software Factory for the Cloud

QUESTIONS?

Page 35: Designing a Reliable Software Factory for the Cloud

WE ARE HIRING