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

DOCX
kapil_2_3years
DOC
chaitraresume
DOC
Ananth_Ravishankar
PDF
Ankur_Srivastava
PDF
What's New in NetBeans IDE 7.x
PDF
Prateek_Srivastava
DOC
Srividhya_pm_resume_latest
PDF
FluentD vs. Logstash
kapil_2_3years
chaitraresume
Ananth_Ravishankar
Ankur_Srivastava
What's New in NetBeans IDE 7.x
Prateek_Srivastava
Srividhya_pm_resume_latest
FluentD vs. Logstash

What's hot (20)

PPTX
Flexible delivery options
PDF
Beacon v2 Reference Implementation: An Overview
PPTX
Developer Experience Overview
PDF
Import filters for vector graphic formats in LibreOffice: the reverse- and st...
PDF
DevOps for TYPO3 Teams and Projects
PDF
Sharepoint and LibreOffice interoperability through CMIS (Protocols Plugfest ...
DOC
Resume - Joydeep Lodh -Updated
PDF
Scaling Git for Enterprise DevOps
PDF
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
PPTX
What’s new in the 4.5
DOCX
Saroj_Profile
PDF
Arnab_Majumdar_Resume
PDF
Meetup Devops-Geneva-19.10.2019
PDF
Talent42 2014 Sam Wholley -
PDF
Improving Automated Tests with Fluent Assertions
DOC
Balaji Resume
PDF
DPC2007 Zend Framework (Gaylord Aulke)
 
DOC
Olaf_Senz_Resume
DOCX
SwagatDash
DOC
10265 developing data access solutions with microsoft visual studio 2010
Flexible delivery options
Beacon v2 Reference Implementation: An Overview
Developer Experience Overview
Import filters for vector graphic formats in LibreOffice: the reverse- and st...
DevOps for TYPO3 Teams and Projects
Sharepoint and LibreOffice interoperability through CMIS (Protocols Plugfest ...
Resume - Joydeep Lodh -Updated
Scaling Git for Enterprise DevOps
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
What’s new in the 4.5
Saroj_Profile
Arnab_Majumdar_Resume
Meetup Devops-Geneva-19.10.2019
Talent42 2014 Sam Wholley -
Improving Automated Tests with Fluent Assertions
Balaji Resume
DPC2007 Zend Framework (Gaylord Aulke)
 
Olaf_Senz_Resume
SwagatDash
10265 developing data access solutions with microsoft visual studio 2010
Ad

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

PDF
Explicit architecture
PPTX
Think Big - Build Small
PDF
How to grow your own Microservice?
PDF
Java EE microservices architecture - evolving the monolith
PDF
Microservices for java architects it-symposium-2015-09-15
PDF
Software Architecture and Architectors: useless VS valuable
PPTX
The-Evolution-of-Software-From-Mainframes-to-the-Cloud .pptx
PDF
Architectural Decisions: Smoothly and Consistently
PDF
Software Architecture - Principles, Patterns and Practices - OSI Days - 2017
PPTX
L02 Architecture
PDF
Software Architecture - Principles Patterns and Practices - OSI Days Workshop...
PPTX
The Role of the Software Architect
PDF
Stay productive while slicing up the monolith
PDF
Stay productive while slicing up the monolith
PDF
Greach 2018: Surviving Microservices
PDF
MicroServices, yet another architectural style?
PDF
Term paper 2073131
PDF
WTF is a Microservice - Rafael Schloming, Datawire
PDF
20141210 - Microservice Container
PPTX
The Big Picture - Integrating Buzzwords
Explicit architecture
Think Big - Build Small
How to grow your own Microservice?
Java EE microservices architecture - evolving the monolith
Microservices for java architects it-symposium-2015-09-15
Software Architecture and Architectors: useless VS valuable
The-Evolution-of-Software-From-Mainframes-to-the-Cloud .pptx
Architectural Decisions: Smoothly and Consistently
Software Architecture - Principles, Patterns and Practices - OSI Days - 2017
L02 Architecture
Software Architecture - Principles Patterns and Practices - OSI Days Workshop...
The Role of the Software Architect
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
Greach 2018: Surviving Microservices
MicroServices, yet another architectural style?
Term paper 2073131
WTF is a Microservice - Rafael Schloming, Datawire
20141210 - Microservice Container
The Big Picture - Integrating Buzzwords
Ad

Recently uploaded (20)

PDF
Digital Strategies for Manufacturing Companies
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
Nekopoi APK 2025 free lastest update
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
top salesforce developer skills in 2025.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
L1 - Introduction to python Backend.pptx
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
assetexplorer- product-overview - presentation
Digital Strategies for Manufacturing Companies
Digital Systems & Binary Numbers (comprehensive )
Nekopoi APK 2025 free lastest update
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
How to Choose the Right IT Partner for Your Business in Malaysia
Designing Intelligence for the Shop Floor.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Odoo POS Development Services by CandidRoot Solutions
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
CHAPTER 2 - PM Management and IT Context
top salesforce developer skills in 2025.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
L1 - Introduction to python Backend.pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
assetexplorer- product-overview - presentation

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