SlideShare a Scribd company logo
1 of 75
Download to read offline
Different software evolutions
from Start till Release in PHP product
Oleksandr Savchenko
Speaker.
winner of Ukrainian IT Awards in category
Software Engineering in 2019
10+ years in software design & development
worked as Developer, Architect, Head of PHP
Head of Core Development in Ciklum
co-founder and contributor of open-source
products
partnership programs with big IT companies
(SensioLabs, AWS, Microsoft, Google Cloud
Platform)
What to expect for You?
● Pet-projects
● Front-End topics
TO BE:
● Common software development practices
● Architecture patterns & approaches
● Useful components & libs
● Examples from real world
● Links to useful materials
NOT TO BE:
Agenda.
● What can be evolved?
● Evolution Stages.
BrownField
BrownField
TDD BDD
DDD
RDDResume Driven Development
Architecture Tradeoff Analysis Method.
Understand
context
Define
alternatives
Define criteria
Set criteria
weights
Set score
Analyse results and
take decision
agility deployment testability performance scalability simplicity cost
Monolithic - - + - - + $
Microservices + + + - - + $$
Space-based + + - + + - $$$$
Service-oriented - - - - + - $$$$
Service-Based + + + - + - $$
Architecture Tradeoff Analysis Method.
Business
Drivers
Software
Architecture
Quality
Attributes
Architectural
Approaches
Scenarios
Architectural
Decisions
Analysis
Trade offs
Sensitivity Points
Non-Risks
Risks
Risk
Themes
Impacts
Detailed
info
Product Stages.
Project Start
Core Development
Search of truth
Continuously Improvements
First Evolution
Components for Evolution.
Software Architecture
patterns
Development
practices
Code Repository
Structure
Development Team
Composition
Infrastructure
Testing Strategy
Software Architecture
components
Project Start.
Project Start
Single Team
Development practices. Methods & Tools
Software Architecture
● Common Quality Attributes (NFR)
● Architecture Views
● Technologies stack
● Common DataFlow, Storages, DB’s
● Architecture decision making process
Infrastructure
● DevOps toolset
● Cloud / on-premise infrastructure
● Provisioning & Infrastructure as a code
● DevOps Code structure
● Monitoring & Logging Requirements
● Specific processes, restrictions
● Infrastructure security / accesses
● CI/CD flow diagram, Release flow
Software Development Practices
● Development tools (IDE, Docker, OS, etc)
● Production environment requirements
● Setup local dev env process
● External 3rd party solutions (for local dev env)
● Components & libs
● Code Development Approach
○ Code Style / Code Definition Convention
○ Software development guides (Tips & Tricks,
Frameworks Best practices, Cloud Best Practices)
○ Code Debug
○ Error Handling
○ Upgrading of external components / dependencies
○ Create new product component (boilerplates)
○ Working with Storages, DB
● Code Repository structure
● Branching Strategy
● Components Versioning strategies
● Code-Review Process and Requirements
● Definition of Done for Software Developers
Software Development Testing approach
● Types of tests
● Code coverage strategy
● Working with storages for tests
● Code Health, Integration with code quality tools
Development practices. Code-Style strategy
Development practices. Code-Style strategy
Software Components. Vendors
Development practices. Cross-Stack contracts
Development practices. Cross-Stack contracts
Architecture components. HTTP Error component
RFC 7807 - Problem Details for HTTP APIs - IETF Tools
Development practices. Methodologies
Lean Development
MonolithArchitecture
никому не рассказывать
что у вас монолит
никогда никому не рассказывать,
что у вас монолит
Software Architecture. Monolithic Architecture
Layered Architecture
Software Architecture. Hexagonal Architecture
Framework
Application
Domain
Core
Domain
Software Architecture. Monolith Architecture
Component
configs
DB
code
code tests
specifications
First Evolution
MicroservicesArchitecture
всем рассказывать
что у вас микросервисы
всем везде рассказывать,
что у вас микросервисы
Software Architecture. Architecture Views
SEI software architecture views
Module
Decomposition Uses
Layered
Class
Component -
and - connector
Client-Server Concurrence Process Shared Data
Allocation
Work
Assignment
Deployment Implementation
4+1 View Model
Software Architecture. Microservices Architecture
Distributed
Separate Deploy
Service Template
Bounded Context
API Layer
Software Architecture. Service-Oriented Architecture
Software Architecture. Service-Based Architecture
Service
granularity
Macroservices
Database scope
CI/CD
Software Architecture. Microservices Architecture
Service 1
Shared DB
Entities
Mapping
Repositories
Migrations
ORM config
Service 2
Entities
Mapping
Repositories
Migrations
ORM config
S1 Repositories S2 Repositories
shared-data-model
Entities
Migrations
Mapping
Repositories
ORM config
Service
shared-db-loader
shared-data-model
Migrations
SA components. Microservices Architecture
Service 1
Shared DB
ORM config
Repositories shared-data-model
library
Entities
Migrations
Mapping
Repositories
ORM config
Service
shared-db-loader
shared-data-model shared-data-model
Service 1
ORM config
Repositories
shared-data-model
Software Dev practices. Spotify Model
Tribes:
● Seller
● Buyer
● Cross-Tribe functionality
Chapters:
● BE
● FE
● QA
● DevOps
Guilds:
● Architecture,
● Infrastructure
● Prod-Preparation,
● etc.
Core Development.
Stage
Core Development
Software Architecture components.
Business service 1
open-source libs
business logic
shared data model
shared business logic
shared libs
infra service clients
Business service N
open-source libs
business logic
shared data model
shared business logic
shared libs
infra service clients
FE
src open-source libs FE shared libs
Infra service 1
open-source libs
logic
shared libs
Infra service N
open-source libs
logic
shared libs
Software Dev practices. Core Team
Core Team Business Team
● Responsible for shared components:
○ infra services
○ infra services client libs
○ shared business related libs
○ shared none-business related libs
● Drives Product Architecture and Infrastructure
● Enablers for future business features
● Should know business scope
● Responsible for shared components:
○ business services
○ shared business related libs
● Drives Service Architecture and
Infrastructure
● Use functionality of Core Team
● Should know business scope
Software Architecture components. Boilerplates
https://github.com/thephpleague/skeleton
Software Architecture components. Service API Client
Business Service
Client 1
Infra Service 1 Infra Service 2 Infra Service 3
Client 2 Client 3
Business Logic
Business
Logic
Client DTO
RequestData
DTOparams
Caller
YAML configGuzzle
Endpoint
Symfony
HTTP Client
1
2
RequestData
<<validates>>
7
<<creates>>
<<creates>>
8
RequestData
3
4
5
ResponseData6
ResponseData
Software Architecture components. Service API Client
Software Architecture components. Service API Client
http://httplug.io/
Software Architecture components. Responsibilities
Business Services
business logic
open-source libs
open-source
packs
infra services
clients
shared business
libs
shared
non-business libs
Infra Services
src
open-source libs
open-source
packs
shared
non-business libs
Test Business Services
src
open-source libs
open-source
packs
shared
non-business libs
shared business
libs
infra services
clients
Service Boilerplate
Library Boilerplate
Polyrepo
Code Repository Structure. Polyrepo
services
shared-libs
open-source
packs
boilerplates
test services
Semver
Software Dev practices. GYSHIDO
Software Architecture components. Delivery Approach
idea,
requirements,
dependencies
Implementation to
Test service
Implementation to
Business Service
Components Development
New versions,
Change logs,
Documentations,
Knowledge Sharings
Definition of Done
Software Architecture components. Delivery Approach
idea,
requirements,
dependencies
1 week
2 week
3 week
Implementation to
Test service
Implementation to
Business Service
Components Development
New versions,
Change logs,
Documentations,
Knowledge Sharings
Definition of Done
1 month
4 week
Search of truth.
Stage
Search for truth
Development practices. Feature Teams
Business Services
business logic
open-source libs
open-source
packs
infra services
clients
shared business
libs
shared
non-business libs
Infra Services
src
open-source libs
open-source
packs
shared
non-business libs
Service Boilerplate
Library Boilerplate
Development practices. Feature Teams
Business service
open-source libs
business logic
shared data model
shared business logic
shared libs
infra service 1 client
Infra service 1
open-source libs
logic
shared libs
infra service 2 client
Infra service 1
open-source libs
logic
shared libs
7pull-requests
7repo code review
6change logs
Code Repository Structure. Monorepo?!
Polyrepo
services
shared-libs
open-source
packs
boilerplates
test services
Monorepo
services
shared-libs
open-source
packs
boilerplates
test services
Code Repository Structure. Migration to Monorepo
Monorepo
migration process
folder structure
migration tool
branching strategy
versioning
shared libs
to control the functionality
CI/CD
Code Repository Structure. Monorepo - migration process.
❏ /web-app-*
❏ /service-*
❏ /boilerplate-*
❏ /library-be-*
❏ /library-fe-*
❏ /automation-*
❏ /testing-*
❏ /integration-*
❏ /deprecated/*
folder structure
symplify/monorepo-builder
Knowledge sharing
Last commits to Polyrepo
Create Monorepo
Checkout Monorepo
First Pull Request
migration process
Code Repository Structure. Monorepo - branching strategy
Trunk Based
Development
https://trunkbaseddevelopment.com/
MASTER M1 M2 M3 M4 M5 M6
R1 R1.1 R2
F1 F2 F2.1 F2.2
M7
R1.1
● all FEATURE branches from MASTER;
● all PR’s merged to MASTER;
● short-living FEATURE branch;
● CI/CD, Tests;
● MASTER is always stable (green);
● RELEASE branch if needed only;
● Cherry picked from MASTER to RELEASE;
Code Repository Structure. Monorepo - working with components
Polyrepos READONLY
Monorepo
business service
shared-lib-3
shared-lib-2
infra service
shared-lib-1
shared-lib-1
shared-lib-2
shared-lib-3
Satis
SINGLEversion
Version ?
Tag ?
MASTER M1 M2 M3 M4
F1 F1.1 F1.1
Code Repository Structure. Monorepo - working with components
composer.json
composer.lock
service
open-source libs
logic
shared-libs-1
/library-be-shared-lib-1
/library-be-shared-lib-2
/library-be-shared-lib-3
/library-be-shared-lib-4
/service-1
/service-2
shared-libs-4
Code Repository Structure. Monorepo - Feature Flags
https://featureflags.io/
Development practices. Monorepos
● Single Feature in a Single PR
● Refactoring is very easy
● Developer onboarding
● Codebase “Big Picture”
● Productivity increase & Less
management
● One Team == One Repository
● Easy on start of project
PROS CONS
● “One version fits all”
● Releasable components
● composer symlinks
● IDE performance, Git History
● new CI / CD
● No real code ownership
Continuous Improvements
Software Architecture.
Service 1 Service 2
2
1
3
4
Software Architecture components. Infra as a code
PHP console
command
app_config.yaml
infra.yaml
None-Breaking change development.
code
Storages
Bundles,
configurations
queues
None-Breaking change development. Code
Backward Compatibility Promise
code
● Class renaming/namespace changes
● New method added to the interface
● Method removed from class
● New required parameter added to class constructor
● Dependency changed in class constructor
None-Breaking change development. Bundles & Configurations
Bundles,
configurations
None-Breaking change development. Storages & Queues
Storages queues
● new mandatory fields
● table / field renaming
● index renaming
● topic renaming
● message structure
Test Strategy. Quality Gates.
PHPStan
PHP Static Analysis Tool
PCOV
CodeCoverage compatible driver
for PHP
phpdbg
SAPI module
Test Strategy. Quality Gates - SonarQube
quality gate for Libraries
quality gate for Services
Test Strategy. Quality Gates - SonarQube
Soft Dev. categories,
Methods & Tools,
Cross-Stack contracts,
Lean Development,
Code Styles Strategy
Monolith,
Microkernel,
Hexagonal
vendors list
Git Flow /
Github Flow
initial setup initial setup
Spotify model
service-based,
Shared DB,
Architecture views
service DB Polyrepos new test types improvements
GYSHIDO,
Core development,
Cross-Team depend.
Services types
components types,
boilerplates,
API client libs
versioning,
Satis
SonarQube,
BlackFire
orchestration &
choreography
Feature Teams Event-Driven Feature Flags
Monorepo,
Trunk-based dev,
new versioning
None-Breaking
change test
approach
Monitoring,
Autoscaling
POC,
Guildies,
None-Breaking changes
BD per service,
Transactions
Infra as a code,
etc
Monorepo
improvements,
Integration branch
SonarQube quality
gates stars
approach
Costs optimization
Project
Start
First
Evolution
Core
Development
Search for
Truth
Continuous
Improvements
Software Dev.
practices
SA patterns
SA
components
Code Repo.
Structure
Test Strategy Infrastructure
Summary.
THANK YOU

More Related Content

What's hot

Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfAll Things Open
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new buildIgor Khotin
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015hirokiky
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as CodeKris Buytaert
 
Reproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RROReproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RROWork-Bench
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0ESUG
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPCTim Burks
 
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...Puppet
 
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...DevOps.com
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginnersEnoch Joshua
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
 
Improving Automated Tests with Fluent Assertions
Improving Automated Tests with Fluent Assertions Improving Automated Tests with Fluent Assertions
Improving Automated Tests with Fluent Assertions TestingCR
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation ToolIzzet Mustafaiev
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...All Things Open
 

What's hot (20)

Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
 
Gradle by Example
Gradle by ExampleGradle by Example
Gradle by Example
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Reproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RROReproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RRO
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0
 
Everything as a code
Everything as a codeEverything as a code
Everything as a code
 
Gradle presentation
Gradle presentationGradle presentation
Gradle presentation
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPC
 
Gradle : An introduction
Gradle : An introduction Gradle : An introduction
Gradle : An introduction
 
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
 
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...
Elevate Your Enterprise Python and R AI, ML Software Strategy with Anaconda T...
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginners
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
 
Improving Automated Tests with Fluent Assertions
Improving Automated Tests with Fluent Assertions Improving Automated Tests with Fluent Assertions
Improving Automated Tests with Fluent Assertions
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
 
Ard gate - English
Ard gate - EnglishArd gate - English
Ard gate - English
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...
 

Similar to "Different software evolutions from Start till Release in PHP product" Oleksandr Savchenko

Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineDatabricks
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at ScaleOracle Developers
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Nedelcho Delchev
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsFedir RYKHTIK
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
Cloud Native Application Integration With APIs
Cloud Native Application Integration With APIsCloud Native Application Integration With APIs
Cloud Native Application Integration With APIsNirmal Fernando
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Shelly Megan
 
CI/CD Pipelines for Your Infrastructure...as Code!
CI/CD Pipelines for Your Infrastructure...as Code!CI/CD Pipelines for Your Infrastructure...as Code!
CI/CD Pipelines for Your Infrastructure...as Code!Harvey Bendaña
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsAxway
 
Azure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarAzure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarCambay Digital
 
Collision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesCollision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesAmazon Web Services
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Janusz Nowak
 
Continuous Localisation On A Massive Scale
Continuous Localisation On A Massive ScaleContinuous Localisation On A Massive Scale
Continuous Localisation On A Massive ScaleGary Lefman
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOpsJeff Bramwell
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ StriderTushar R
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Oracle Developers
 

Similar to "Different software evolutions from Start till Release in PHP product" Oleksandr Savchenko (20)

Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation Engine
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
 
Kunal bhatia resume mass
Kunal bhatia   resume massKunal bhatia   resume mass
Kunal bhatia resume mass
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
DevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWSDevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWS
 
Cloud Native Application Integration With APIs
Cloud Native Application Integration With APIsCloud Native Application Integration With APIs
Cloud Native Application Integration With APIs
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!
 
CI/CD Pipelines for Your Infrastructure...as Code!
CI/CD Pipelines for Your Infrastructure...as Code!CI/CD Pipelines for Your Infrastructure...as Code!
CI/CD Pipelines for Your Infrastructure...as Code!
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortals
 
Vsts intro
Vsts introVsts intro
Vsts intro
 
Azure DevOps Best Practices Webinar
Azure DevOps Best Practices WebinarAzure DevOps Best Practices Webinar
Azure DevOps Best Practices Webinar
 
Collision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD PipelinesCollision 2018: CodeStar for CICD Pipelines
Collision 2018: CodeStar for CICD Pipelines
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
Continuous Localisation On A Massive Scale
Continuous Localisation On A Massive ScaleContinuous Localisation On A Massive Scale
Continuous Localisation On A Massive Scale
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOps
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
 
The Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial Services
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
 

More from Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Recently uploaded

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

"Different software evolutions from Start till Release in PHP product" Oleksandr Savchenko

  • 1. Different software evolutions from Start till Release in PHP product Oleksandr Savchenko
  • 2. Speaker. winner of Ukrainian IT Awards in category Software Engineering in 2019 10+ years in software design & development worked as Developer, Architect, Head of PHP Head of Core Development in Ciklum co-founder and contributor of open-source products partnership programs with big IT companies (SensioLabs, AWS, Microsoft, Google Cloud Platform)
  • 3. What to expect for You? ● Pet-projects ● Front-End topics TO BE: ● Common software development practices ● Architecture patterns & approaches ● Useful components & libs ● Examples from real world ● Links to useful materials NOT TO BE:
  • 4. Agenda. ● What can be evolved? ● Evolution Stages.
  • 5.
  • 6.
  • 10. Architecture Tradeoff Analysis Method. Understand context Define alternatives Define criteria Set criteria weights Set score Analyse results and take decision agility deployment testability performance scalability simplicity cost Monolithic - - + - - + $ Microservices + + + - - + $$ Space-based + + - + + - $$$$ Service-oriented - - - - + - $$$$ Service-Based + + + - + - $$
  • 11. Architecture Tradeoff Analysis Method. Business Drivers Software Architecture Quality Attributes Architectural Approaches Scenarios Architectural Decisions Analysis Trade offs Sensitivity Points Non-Risks Risks Risk Themes Impacts Detailed info
  • 12. Product Stages. Project Start Core Development Search of truth Continuously Improvements First Evolution
  • 13. Components for Evolution. Software Architecture patterns Development practices Code Repository Structure Development Team Composition Infrastructure Testing Strategy Software Architecture components
  • 16. Development practices. Methods & Tools Software Architecture ● Common Quality Attributes (NFR) ● Architecture Views ● Technologies stack ● Common DataFlow, Storages, DB’s ● Architecture decision making process Infrastructure ● DevOps toolset ● Cloud / on-premise infrastructure ● Provisioning & Infrastructure as a code ● DevOps Code structure ● Monitoring & Logging Requirements ● Specific processes, restrictions ● Infrastructure security / accesses ● CI/CD flow diagram, Release flow Software Development Practices ● Development tools (IDE, Docker, OS, etc) ● Production environment requirements ● Setup local dev env process ● External 3rd party solutions (for local dev env) ● Components & libs ● Code Development Approach ○ Code Style / Code Definition Convention ○ Software development guides (Tips & Tricks, Frameworks Best practices, Cloud Best Practices) ○ Code Debug ○ Error Handling ○ Upgrading of external components / dependencies ○ Create new product component (boilerplates) ○ Working with Storages, DB ● Code Repository structure ● Branching Strategy ● Components Versioning strategies ● Code-Review Process and Requirements ● Definition of Done for Software Developers Software Development Testing approach ● Types of tests ● Code coverage strategy ● Working with storages for tests ● Code Health, Integration with code quality tools
  • 22. Architecture components. HTTP Error component RFC 7807 - Problem Details for HTTP APIs - IETF Tools
  • 24. MonolithArchitecture никому не рассказывать что у вас монолит никогда никому не рассказывать, что у вас монолит
  • 25. Software Architecture. Monolithic Architecture Layered Architecture
  • 26. Software Architecture. Hexagonal Architecture Framework Application Domain Core Domain
  • 27. Software Architecture. Monolith Architecture Component configs DB code code tests specifications
  • 29. MicroservicesArchitecture всем рассказывать что у вас микросервисы всем везде рассказывать, что у вас микросервисы
  • 30. Software Architecture. Architecture Views SEI software architecture views Module Decomposition Uses Layered Class Component - and - connector Client-Server Concurrence Process Shared Data Allocation Work Assignment Deployment Implementation 4+1 View Model
  • 31. Software Architecture. Microservices Architecture Distributed Separate Deploy Service Template Bounded Context API Layer
  • 33. Software Architecture. Service-Based Architecture Service granularity Macroservices Database scope CI/CD
  • 34. Software Architecture. Microservices Architecture Service 1 Shared DB Entities Mapping Repositories Migrations ORM config Service 2 Entities Mapping Repositories Migrations ORM config S1 Repositories S2 Repositories shared-data-model Entities Migrations Mapping Repositories ORM config Service shared-db-loader shared-data-model Migrations
  • 35. SA components. Microservices Architecture Service 1 Shared DB ORM config Repositories shared-data-model library Entities Migrations Mapping Repositories ORM config Service shared-db-loader shared-data-model shared-data-model Service 1 ORM config Repositories shared-data-model
  • 36. Software Dev practices. Spotify Model Tribes: ● Seller ● Buyer ● Cross-Tribe functionality Chapters: ● BE ● FE ● QA ● DevOps Guilds: ● Architecture, ● Infrastructure ● Prod-Preparation, ● etc.
  • 38. Software Architecture components. Business service 1 open-source libs business logic shared data model shared business logic shared libs infra service clients Business service N open-source libs business logic shared data model shared business logic shared libs infra service clients FE src open-source libs FE shared libs Infra service 1 open-source libs logic shared libs Infra service N open-source libs logic shared libs
  • 39. Software Dev practices. Core Team Core Team Business Team ● Responsible for shared components: ○ infra services ○ infra services client libs ○ shared business related libs ○ shared none-business related libs ● Drives Product Architecture and Infrastructure ● Enablers for future business features ● Should know business scope ● Responsible for shared components: ○ business services ○ shared business related libs ● Drives Service Architecture and Infrastructure ● Use functionality of Core Team ● Should know business scope
  • 40.
  • 41. Software Architecture components. Boilerplates https://github.com/thephpleague/skeleton
  • 42. Software Architecture components. Service API Client Business Service Client 1 Infra Service 1 Infra Service 2 Infra Service 3 Client 2 Client 3 Business Logic Business Logic Client DTO RequestData DTOparams Caller YAML configGuzzle Endpoint Symfony HTTP Client 1 2 RequestData <<validates>> 7 <<creates>> <<creates>> 8 RequestData 3 4 5 ResponseData6 ResponseData
  • 43. Software Architecture components. Service API Client
  • 44. Software Architecture components. Service API Client http://httplug.io/
  • 45. Software Architecture components. Responsibilities Business Services business logic open-source libs open-source packs infra services clients shared business libs shared non-business libs Infra Services src open-source libs open-source packs shared non-business libs Test Business Services src open-source libs open-source packs shared non-business libs shared business libs infra services clients Service Boilerplate Library Boilerplate
  • 46. Polyrepo Code Repository Structure. Polyrepo services shared-libs open-source packs boilerplates test services Semver
  • 48. Software Architecture components. Delivery Approach idea, requirements, dependencies Implementation to Test service Implementation to Business Service Components Development New versions, Change logs, Documentations, Knowledge Sharings Definition of Done
  • 49.
  • 50. Software Architecture components. Delivery Approach idea, requirements, dependencies 1 week 2 week 3 week Implementation to Test service Implementation to Business Service Components Development New versions, Change logs, Documentations, Knowledge Sharings Definition of Done 1 month 4 week
  • 51.
  • 53. Development practices. Feature Teams Business Services business logic open-source libs open-source packs infra services clients shared business libs shared non-business libs Infra Services src open-source libs open-source packs shared non-business libs Service Boilerplate Library Boilerplate
  • 54. Development practices. Feature Teams Business service open-source libs business logic shared data model shared business logic shared libs infra service 1 client Infra service 1 open-source libs logic shared libs infra service 2 client Infra service 1 open-source libs logic shared libs 7pull-requests 7repo code review 6change logs
  • 55. Code Repository Structure. Monorepo?! Polyrepo services shared-libs open-source packs boilerplates test services Monorepo services shared-libs open-source packs boilerplates test services
  • 56. Code Repository Structure. Migration to Monorepo Monorepo migration process folder structure migration tool branching strategy versioning shared libs to control the functionality CI/CD
  • 57. Code Repository Structure. Monorepo - migration process. ❏ /web-app-* ❏ /service-* ❏ /boilerplate-* ❏ /library-be-* ❏ /library-fe-* ❏ /automation-* ❏ /testing-* ❏ /integration-* ❏ /deprecated/* folder structure symplify/monorepo-builder Knowledge sharing Last commits to Polyrepo Create Monorepo Checkout Monorepo First Pull Request migration process
  • 58. Code Repository Structure. Monorepo - branching strategy Trunk Based Development https://trunkbaseddevelopment.com/ MASTER M1 M2 M3 M4 M5 M6 R1 R1.1 R2 F1 F2 F2.1 F2.2 M7 R1.1 ● all FEATURE branches from MASTER; ● all PR’s merged to MASTER; ● short-living FEATURE branch; ● CI/CD, Tests; ● MASTER is always stable (green); ● RELEASE branch if needed only; ● Cherry picked from MASTER to RELEASE;
  • 59. Code Repository Structure. Monorepo - working with components Polyrepos READONLY Monorepo business service shared-lib-3 shared-lib-2 infra service shared-lib-1 shared-lib-1 shared-lib-2 shared-lib-3 Satis SINGLEversion Version ? Tag ? MASTER M1 M2 M3 M4 F1 F1.1 F1.1
  • 60. Code Repository Structure. Monorepo - working with components composer.json composer.lock service open-source libs logic shared-libs-1 /library-be-shared-lib-1 /library-be-shared-lib-2 /library-be-shared-lib-3 /library-be-shared-lib-4 /service-1 /service-2 shared-libs-4
  • 61. Code Repository Structure. Monorepo - Feature Flags https://featureflags.io/
  • 62. Development practices. Monorepos ● Single Feature in a Single PR ● Refactoring is very easy ● Developer onboarding ● Codebase “Big Picture” ● Productivity increase & Less management ● One Team == One Repository ● Easy on start of project PROS CONS ● “One version fits all” ● Releasable components ● composer symlinks ● IDE performance, Git History ● new CI / CD ● No real code ownership
  • 64. Software Architecture. Service 1 Service 2 2 1 3 4
  • 65. Software Architecture components. Infra as a code PHP console command app_config.yaml infra.yaml
  • 67. None-Breaking change development. Code Backward Compatibility Promise code ● Class renaming/namespace changes ● New method added to the interface ● Method removed from class ● New required parameter added to class constructor ● Dependency changed in class constructor
  • 68. None-Breaking change development. Bundles & Configurations Bundles, configurations
  • 69. None-Breaking change development. Storages & Queues Storages queues ● new mandatory fields ● table / field renaming ● index renaming ● topic renaming ● message structure
  • 70. Test Strategy. Quality Gates. PHPStan PHP Static Analysis Tool PCOV CodeCoverage compatible driver for PHP phpdbg SAPI module
  • 71. Test Strategy. Quality Gates - SonarQube quality gate for Libraries quality gate for Services
  • 72. Test Strategy. Quality Gates - SonarQube
  • 73. Soft Dev. categories, Methods & Tools, Cross-Stack contracts, Lean Development, Code Styles Strategy Monolith, Microkernel, Hexagonal vendors list Git Flow / Github Flow initial setup initial setup Spotify model service-based, Shared DB, Architecture views service DB Polyrepos new test types improvements GYSHIDO, Core development, Cross-Team depend. Services types components types, boilerplates, API client libs versioning, Satis SonarQube, BlackFire orchestration & choreography Feature Teams Event-Driven Feature Flags Monorepo, Trunk-based dev, new versioning None-Breaking change test approach Monitoring, Autoscaling POC, Guildies, None-Breaking changes BD per service, Transactions Infra as a code, etc Monorepo improvements, Integration branch SonarQube quality gates stars approach Costs optimization Project Start First Evolution Core Development Search for Truth Continuous Improvements Software Dev. practices SA patterns SA components Code Repo. Structure Test Strategy Infrastructure