65
გადარჩი და გაიზარდე თეზევსის გემი, არქიტეკტურა, მიკროსერვისები, დომენები და სხვა ..

Survive andgrow

Embed Size (px)

Citation preview

Page 1: Survive andgrow

გადარჩი და გაიზარდე

თეზევსის გემი, არქიტეკტურა, მიკროსერვისები, დომენები და

სხვა ..

Page 2: Survive andgrow

George Mamaladze @gmamaladze Senior Software Architect at SIEMENS Digital Factory

Page 3: Survive andgrow

Our Businesses Power and Gas Wind Power and Renewables Power Generation Services

Energy Management

Digital Factory

Healthcare

Building Technologies

Process Industries and Drives

Mobility

Financial Services

Page 4: Survive andgrow

My Role • Business

• Vision

• Goals

• Scoping

• Roadmap

Product Management

• Requirement Engineering

• Commonalities & Variabilities

• Domain Design

• Implementation of Core Assets

Domain Engineering

• Product Requirements

• Implement Variations

• Build Product

Application Engineering

Syst

em

Arc

hit

ect

Pla

tfo

rm

Arc

hit

ect

Ap

plic

atio

n

Arc

hit

ect

Sen

ior

Soft

war

e A

rch

itec

t

Page 5: Survive andgrow
Page 6: Survive andgrow

ეგვიპტური უკვდავების სიმბოლო

U+2625 U+132F9

Page 7: Survive andgrow

ადამიანის უკვდავება შესაძლებელია? როდის? როგორ?

Page 8: Survive andgrow

მოგონებები ქლაუდში

Page 9: Survive andgrow

ხელოვნური ინტელექტი

Page 10: Survive andgrow

ადამიანისა და მანქანის ინტერფეისი

Page 11: Survive andgrow

100% - download complete

Page 12: Survive andgrow

თეზევსის გემი

Page 13: Survive andgrow

თეზევსის გემი

Page 14: Survive andgrow
Page 16: Survive andgrow

ასე იწყებოდა Facebook-ი

Page 17: Survive andgrow
Page 18: Survive andgrow

ფუნქციების რაოდენობა იზრდება

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

Facebook

Page 19: Survive andgrow

ფუნქციების რაოდენობა იზრდება

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

Facebook

კონკურენტები

Page 20: Survive andgrow

რა გვჭირდება?

ფუნქციების სწრაფად დამატება

Page 21: Survive andgrow
Page 22: Survive andgrow

რა გვჭირდება?

ფუნქციების სწრაფად დამატება

ფუნქციების სწრაფად ამოღება

(…)

Page 23: Survive andgrow

როგორ შეძლო FACEBOOK-მა ფუნქციონალობის სწრაფად დამატება?

კარგი დიზაინი

Page 24: Survive andgrow

Fowler‘s Design Stamina Hypothesis

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

კარგი დიზაინი

ცუდი დიზაინი

Page 25: Survive andgrow

როგორ დავიწყო თავიდანვე „კარგი“ დიზაინით? რა ტექნოლოგიები და მიდგომები გამოვიყენო?

Page 26: Survive andgrow

www.thoughtworks.com/radar

Page 27: Survive andgrow
Page 28: Survive andgrow

Fowler‘s Design Stamina Hypothesis

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

კარგი დიზაინი

ცუდი დიზაინი

Page 30: Survive andgrow

Fowler‘s Design Stamina Hypothesis

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

კარგი დიზაინი

ცუდი დიზაინი

Page 31: Survive andgrow

Fowler‘s Design Stamina Hypothesis

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

კარგი დიზაინი

ცუდი დიზაინი

design pay-off line

down here it may be worth to trade off design quality for time to market …

Page 32: Survive andgrow

რა გვჭირდება?

ფუნქციების სწრაფად დამატება

ფუნქციების სწრაფად ამოღება

ბაზარზე სწრაფი გასვლა

Page 33: Survive andgrow

ჩემი პირველი

„კომერციული „

აპლიკაციის დიზაინი

Page 34: Survive andgrow

Northwind

Page 35: Survive andgrow

Northwind აპლიკაციის დიზაინი

Page 36: Survive andgrow

გაუმჯობესებული დიზაინი პირველი

ვერსია

მეორე ვერსია

Page 37: Survive andgrow

Fowler‘s Design Stamina Hypothesis

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

კარგი დიზაინი

ცუდი დიზაინი

design pay-off line

down here it may be worth to trade off design quality for time to market …

Page 38: Survive andgrow

ინოვაცია

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

პირველი ვერსია

Page 39: Survive andgrow

ინოვაცია

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

პირველი ვერსია

მეორე ვერსია

ჩანაცვლება

Page 40: Survive andgrow

1. დაიბადე - დაიწყე მარტივად!

2. გადარჩი - დროულად შეუდექი დაანაწევრებას!

3. გაიზარდე - მუდმივად ცვალე ნაწილები!

მარტივი, მონოლითური აპლიკაცია ამცირებს time to market-ს

Page 41: Survive andgrow

1. დაიბადე - დაიწყე მარტივად!

2. გადარჩი - დროულად შეუდექი დაანაწევრებას!

3. გაიზარდე - მუდმივად ცვალე ნაწილები!

მარტივი, მონოლითური აპლიკაცია ამცირებს time to market-ს

Page 42: Survive andgrow

ინოვაცია

დრო

დაგროვილი ფუნქციონალობა

cumulative functionality

პირველი ვერსია

მეორე ვერსია

ჩანაცვლება

Page 43: Survive andgrow

1. დაიბადე - დაიწყე მარტივად!

2. გადარჩი - დროულად შეუდექი დაანაწევრებას!

3. გაიზარდე - მუდმივად ცვალე ნაწილები!

წარმატების შესანარჩუნებლად საწროა ცვლილება, ცვლილებას ჭირდება დრო.

Page 44: Survive andgrow

ვთქვათ TIME TO MARKET არ გვაღელვებს.

მაინც რატომ დავიწყოთ მარტივად?

მიზეზი 2

Page 45: Survive andgrow
Page 46: Survive andgrow

“Microservice practitioners, usually have come from an evolutionary design background.”

Martin Fowler

http://www.martinfowler.com/articles/microservices.html

Page 47: Survive andgrow

Monolith

Page 48: Survive andgrow

დომენები Domains - დომენები (ფუნქციონალობა)

მონოლითი: ყველა დომენი ერთ აპლიკაციაში (სერვისში)

მიკროსერვისები: თითო დომენი ცალკე აპლიკაციაში (სერვისში)

Page 49: Survive andgrow

რა არის დომენი დომენები ელექტრონული ფოსტის მაგალითზე კლასიკური

ელ-ფოსტის კლიენტი

ვებმეილი

ძიება

რედაქტორი

Attachment-ები

ტეგები, კატეგორიები

კონტაქტები

Page 50: Survive andgrow

სკალირება - მონოლითი vs. მიკროსერვისები

Page 51: Survive andgrow

არსებული მონოლითის დეკომპოზიცია

Page 52: Survive andgrow

როგორ დაიწყო მონოლითი?

Page 53: Survive andgrow

როგორ დაიწყო მონოლითი?

Page 54: Survive andgrow

1. დაიბადე - დაიწყე მარტივად!

2. გადარჩი - დროულად შეუდექი დაანაწევრებას!

3. გაიზარდე - მუდმივად ცვალე ნაწილები!

მარტივი, მონოლითური აპლიკაცია საჭიროა გამოსაყოფი დომენების

პირველადი იდენტიფიკაციისათვის.

Page 55: Survive andgrow

Monolith First

Monolith First - start with monolith: once you realize microservices are worthwhile you decompose and sacrifice your initial monolith.

Page 56: Survive andgrow

როგორ დაიწყო მონოლითი?

Page 57: Survive andgrow

Monolith First

Stefan Tilkov argues against this, saying that in practice it's too hard to build a monolith that will split apart easily.

Page 58: Survive andgrow

Monolith First

Both approaches, however, agree that you should not attempt microservices unless you know the domain really well.

Page 59: Survive andgrow

დომენები Domains - დომენები (ფუნქციონალობა)

მონოლითი: ყველა დომენი ერთ აპლიკაციაში (სერვისში)

მიკროსერვისები: თითო დომენი ცალკე აპლიკაციაში (სერვისში)

Page 60: Survive andgrow
Page 61: Survive andgrow

წიგნები

Page 62: Survive andgrow

მიკროსერვისების „გადაბმა“

? ?

Page 63: Survive andgrow

Microservice-ების „გადაბმა“

Page 64: Survive andgrow
Page 65: Survive andgrow

1. დაიბადე - დაიწყე მარტივად!

2. გადარჩი - დროულად შეუდექი დაანაწევრებას!

3. გაიზარდე - მუდმივად ცვალე ნაწილები!

გმადლობთ ყურადღებისათვის!