SlideShare a Scribd company logo
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.
PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product
PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product
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
PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product
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
PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product
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
PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product
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 (20)

PPTX
Flexible delivery options
Micro Focus
 
PDF
Beacon v2 Reference Implementation: An Overview
CINECAProject
 
PPTX
Developer Experience Overview
Ross Jimenez
 
PDF
Import filters for vector graphic formats in LibreOffice: the reverse- and st...
lgworld
 
PDF
DevOps for TYPO3 Teams and Projects
Fedir RYKHTIK
 
PDF
Sharepoint and LibreOffice interoperability through CMIS (Protocols Plugfest ...
Igalia
 
DOC
Resume - Joydeep Lodh -Updated
Joydeep Lodh
 
PDF
Scaling Git for Enterprise DevOps
Eng Teong Cheah
 
PDF
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
Igalia
 
PPTX
What’s new in the 4.5
Yuriy Seniuk
 
DOCX
Saroj_Profile
saroj maharana
 
PDF
Arnab_Majumdar_Resume
Arnab Majumdar
 
PDF
Meetup Devops-Geneva-19.10.2019
Hidora
 
PDF
Talent42 2014 Sam Wholley -
Talent42
 
PDF
Improving Automated Tests with Fluent Assertions
TestingCR
 
DOC
Balaji Resume
Balaji Ommudali
 
PDF
DPC2007 Zend Framework (Gaylord Aulke)
dpc
 
DOC
Olaf_Senz_Resume
Olaf Senz
 
DOCX
SwagatDash
Swagat Dash
 
DOC
10265 developing data access solutions with microsoft visual studio 2010
bestip
 
Flexible delivery options
Micro Focus
 
Beacon v2 Reference Implementation: An Overview
CINECAProject
 
Developer Experience Overview
Ross Jimenez
 
Import filters for vector graphic formats in LibreOffice: the reverse- and st...
lgworld
 
DevOps for TYPO3 Teams and Projects
Fedir RYKHTIK
 
Sharepoint and LibreOffice interoperability through CMIS (Protocols Plugfest ...
Igalia
 
Resume - Joydeep Lodh -Updated
Joydeep Lodh
 
Scaling Git for Enterprise DevOps
Eng Teong Cheah
 
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
Igalia
 
What’s new in the 4.5
Yuriy Seniuk
 
Saroj_Profile
saroj maharana
 
Arnab_Majumdar_Resume
Arnab Majumdar
 
Meetup Devops-Geneva-19.10.2019
Hidora
 
Talent42 2014 Sam Wholley -
Talent42
 
Improving Automated Tests with Fluent Assertions
TestingCR
 
Balaji Resume
Balaji Ommudali
 
DPC2007 Zend Framework (Gaylord Aulke)
dpc
 
Olaf_Senz_Resume
Olaf Senz
 
SwagatDash
Swagat Dash
 
10265 developing data access solutions with microsoft visual studio 2010
bestip
 

Similar to PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product (20)

PDF
Building A Product Assortment Recommendation Engine
Databricks
 
PPTX
Delivering Developer Tools at Scale
Oracle Developers
 
PPT
5-Must-Have-Tools-for-.NET-Application-Development-Services-pptx-.ppt
Moreyeahs
 
PPTX
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Nedelcho Delchev
 
DOCX
Kunal bhatia resume mass
Kunal Bhatia, MBA Candidate, BSc.
 
PPTX
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Michael Foster
 
PPTX
Latest trends in information technology
Eldos Kuriakose
 
PPTX
DevOps on GCP Course Compared to AWS
Joseph Holbrook, Chief Learning Officer (CLO)
 
PDF
Cloud Native Application Integration With APIs
Nirmal Fernando
 
PDF
Prominent Back-end frameworks to consider in 2022!
Shelly Megan
 
PDF
CI/CD Pipelines for Your Infrastructure...as Code!
Harvey Bendaña
 
PDF
Content Strategy and Developer Engagement for DevPortals
Axway
 
PPT
Vsts intro
PV Farms
 
PPTX
Azure DevOps Best Practices Webinar
Cambay Digital
 
PDF
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
 
PPTX
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Janusz Nowak
 
PPTX
Continuous Localisation On A Massive Scale
Gary Lefman
 
PPTX
The Power of Azure DevOps
Jeff Bramwell
 
PPSX
Skill_Level_ Strider
Tushar R
 
PDF
Modern Environment for zOS Development.pdf
Fariborz Seyedloo
 
Building A Product Assortment Recommendation Engine
Databricks
 
Delivering Developer Tools at Scale
Oracle Developers
 
5-Must-Have-Tools-for-.NET-Application-Development-Services-pptx-.ppt
Moreyeahs
 
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)
Nedelcho Delchev
 
Kunal bhatia resume mass
Kunal Bhatia, MBA Candidate, BSc.
 
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Michael Foster
 
Latest trends in information technology
Eldos Kuriakose
 
DevOps on GCP Course Compared to AWS
Joseph Holbrook, Chief Learning Officer (CLO)
 
Cloud Native Application Integration With APIs
Nirmal Fernando
 
Prominent Back-end frameworks to consider in 2022!
Shelly Megan
 
CI/CD Pipelines for Your Infrastructure...as Code!
Harvey Bendaña
 
Content Strategy and Developer Engagement for DevPortals
Axway
 
Vsts intro
PV Farms
 
Azure DevOps Best Practices Webinar
Cambay Digital
 
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Janusz Nowak
 
Continuous Localisation On A Massive Scale
Gary Lefman
 
The Power of Azure DevOps
Jeff Bramwell
 
Skill_Level_ Strider
Tushar R
 
Modern Environment for zOS Development.pdf
Fariborz Seyedloo
 
Ad

Recently uploaded (20)

PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PPT
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
Tally software_Introduction_Presentation
AditiBansal54083
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
Import Data Form Excel to Tally Services
Tally xperts
 
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Ad

PHPFrameworkDay 2020 - Different software evolutions from Start till Release in PHP product

  • 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.
  • 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
  • 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
  • 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
  • 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