SlideShare ist ein Scribd-Unternehmen logo
1 von 24
The lean development stack
Adrien LAUER
SeedStack
2 of 24
History
Project started late 2012
10+ years experience of frameworks
Custom
Open-Source: mainly Spring
3 of 24
Goals
Build a common development stack
Shared across all business entities
Manufacturing / logistics /
finance / sales / R&D / …
Being extensible
Enabling re-use
4 of 24
Organization
Core team at PSA Peugeot Citroën
Other members at various locations
http://seedstack.org
https://github.com/seedstack
Twitter: @seedstack
IRC: #seedstack on freenode
5 of 24
Get presentation code samples at
https://github.com/adrienlauer/poss-samples
6 of 24
Core values
Opinion
A reference architecture for your apps
Modularity
Single responsibility principle
Extensibility
Open-Closed principle
7 of 24
Foundation
Java
Set of technologies to build backends
Web
Set of technologies to build Web apps
Business
Domain-Driven Design (DDD) approach
8 of 24
Foundation
Java
Set of technologies to build backends
Web
Set of technologies to build Web apps
Business
Domain-Driven Design (DDD) approach
9 of 24
Java focus
Kernel + plugin architecture
One plugin per concern
Scalable
One global Guice injector
Unified configuration
Plugin
discovery
Classpath
scan
Initialization
10 of 24
Sample plugin
public class MyPlugin extends AbstractPlugin {
private final Set<Class<?>> annotatedClasses = new HashSet<>();
@Override
public String name() {
return "my-plugin";
}
@Override
public Collection<ClasspathScanRequest> classpathScanRequests() {
return classpathScanRequestBuilder().annotationType(Service.class).build();
}
@Override
public InitState init(InitContext initContext) {
annotatedClasses.addAll(initContext.scannedClassesByAnnotationClass().get(Service.class));
return InitState.INITIALIZED;
}
@Override
public Object nativeUnitModule() {
return (Module) binder -> annotatedClasses.forEach(binder::bind);
}
}
11 of 24
So we built the core…
Contains the kernel
Provides basic features
Launching
Configuration
IoC
Service commands
Diagnostics
12 of 24
Then we scaled up…
10+ plugins
Testing
Security
Transactions
REST
Metrics / health
Web
…
Adding new technologies is quick and easy
All PSA requirements have been covered
50 satisfied projects over two years
13 of 24
Foundation
Java
Set of technologies to build REST backends
Web
Set of technologies to build Web apps
Business
Domain-Driven Design (DDD) approach
14 of 24
Web focus
Loader + fragments architecture
A fragment per concern
Composable
Configure and initialize an SPA
Fragment
download
Configuration
computing
Initialization
15 of 24
Sample fragment
{
"id": "demo",
"name": "W20 POSS demo",
"modules": {
"user": "{demo}/modules/user"
},
"i18n": {
"en": [ "{demo}/i18n/messages-en.json" ],
"fr": [ "{demo}/i18n/messages-fr.json" ]
},
"routes": {
"hello": {
"template": "<div class="container"><h1>Hello World!</h1></div>",
"hidden": true
},
"user": {
"templateUrl": "{demo}/views/user.html",
"controller": "UserController"
}
}
}
16 of 24
Main features
Based on popular libraries
AngularJS
RequireJS
Advanced enterprise features
Multi CSS framework
Bootstrap
Angular material
Theming support
2 Open-Source themes
3 PSA proprietary themes
17 of 24
Foundation
Java
Set of technologies to build REST backends
Web
Set of technologies to build Web apps
Business
Domain-Driven Design (DDD) approach
18 of 24
Level of involvement
Annotations
Interfaces
Base classes
19 of 24
Building blocks
20 of 24
Main features
DDD semantic + injection
Easy-to-use default implementations
Smart DTO / domain mapping
Built-in identity generation strategies
21 of 24
Sample
class SaleServiceImpl implements SaleService {
private final Repository<Seller, Long> sellerRepository;
private final DomainRegistry domainRegistry;
@Inject
public SaleServiceImpl(Repository<Seller, Long> sellerRepository, DomainRegistry domainRegistry) {
this.sellerRepository = sellerRepository;
this.domainRegistry = domainRegistry;
}
@Override
public void updateBonus(Order order, Long sellerId) {
Seller seller = sellerRepository.load(sellerId);
if (seller == null) {
throw new IllegalArgumentException("Seller " + sellerId + " cannot be found");
}
BonusPolicy bonusPolicy = domainRegistry
.getPolicy(BonusPolicy.class, seller.getBonusPolicy());
double orderBonus = bonusPolicy.computeBonus(order);
seller.addToMonthlyBonus(orderBonus);
sellerRepository.save(seller);
}
}
22 of 24
Extensibility
20+ official add-ons
Audit, ElasticSearch, I18n, IO, JavaMail, JCache, JDBC, JMS, JPA, LDAP,
MongoDB, Monitoring, Neo4J, Redis, Scheduling, Solr, Spring-bridge,
Validation, W20-bridge, Web-Services, …
Open to third-party
http://seedstack.org/addons
PSA uses only 3 proprietary add-ons
23 of 24
Distribution
Global packaging of all modules
Each organization can roll its own distribution
Open-Source reference distribution released 3 times per year
16.4 16.7 16.11
24 of 24
Thank you!
Website: http://seedstack.org
GitHub: https://github.com/seedstack
IRC: #seedstack on freenode
Contributions welcome!
Pull requests
Documentation fixes
Issues

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction To Code Igniter
Introduction To Code IgniterIntroduction To Code Igniter
Introduction To Code IgniterAmzad Hossain
 
Introduction to Yii & performance comparison with Drupal
Introduction to Yii & performance comparison with DrupalIntroduction to Yii & performance comparison with Drupal
Introduction to Yii & performance comparison with Drupalcadet018
 
Case Study: University of California, Berkeley and San Francisco
Case Study: University of California, Berkeley and San FranciscoCase Study: University of California, Berkeley and San Francisco
Case Study: University of California, Berkeley and San FranciscoForgeRock
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
Developing Web Sites and Services using Visual Studio 2013
Developing Web Sites and Services using Visual Studio 2013Developing Web Sites and Services using Visual Studio 2013
Developing Web Sites and Services using Visual Studio 2013Microsoft Visual Studio
 
Identity Manager Opensource OpenIDM Architecture
Identity Manager Opensource OpenIDM ArchitectureIdentity Manager Opensource OpenIDM Architecture
Identity Manager Opensource OpenIDM ArchitectureAidy Tificate
 
What's new for Developers in Visual Studio 2013
What's new for Developers in Visual Studio 2013What's new for Developers in Visual Studio 2013
What's new for Developers in Visual Studio 2013Microsoft Visual Studio
 
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, Readify
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, ReadifyASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, Readify
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, ReadifyREADIFY
 
Web changesandasp4 upload
Web changesandasp4 uploadWeb changesandasp4 upload
Web changesandasp4 uploadREADIFY
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EERodrigo Cândido da Silva
 
JSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End FrameworksJSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End FrameworksIan Hlavats
 
Future of SharePoint Dev SPFx Extensions
Future of SharePoint Dev   SPFx ExtensionsFuture of SharePoint Dev   SPFx Extensions
Future of SharePoint Dev SPFx ExtensionsAlex Terentiev
 
Codeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginnerCodeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginneraminbd
 
Programming with Azure Active Directory
Programming with Azure Active DirectoryProgramming with Azure Active Directory
Programming with Azure Active DirectoryJoonas Westlin
 

Was ist angesagt? (20)

Introduction To Code Igniter
Introduction To Code IgniterIntroduction To Code Igniter
Introduction To Code Igniter
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
JavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
JavaCro'15 - Creating Android Apps that Use Liferay - Igor BešlićJavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
JavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
 
Weblogic deployment
Weblogic deploymentWeblogic deployment
Weblogic deployment
 
Introduction to Yii & performance comparison with Drupal
Introduction to Yii & performance comparison with DrupalIntroduction to Yii & performance comparison with Drupal
Introduction to Yii & performance comparison with Drupal
 
Case Study: University of California, Berkeley and San Francisco
Case Study: University of California, Berkeley and San FranciscoCase Study: University of California, Berkeley and San Francisco
Case Study: University of California, Berkeley and San Francisco
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
Developing Web Sites and Services using Visual Studio 2013
Developing Web Sites and Services using Visual Studio 2013Developing Web Sites and Services using Visual Studio 2013
Developing Web Sites and Services using Visual Studio 2013
 
Identity Manager Opensource OpenIDM Architecture
Identity Manager Opensource OpenIDM ArchitectureIdentity Manager Opensource OpenIDM Architecture
Identity Manager Opensource OpenIDM Architecture
 
What's new for Developers in Visual Studio 2013
What's new for Developers in Visual Studio 2013What's new for Developers in Visual Studio 2013
What's new for Developers in Visual Studio 2013
 
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, Readify
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, ReadifyASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, Readify
ASP.NET 4 & Web Dev in Visual Studio 2010 - Alex Mackey, Readify
 
Web changesandasp4 upload
Web changesandasp4 uploadWeb changesandasp4 upload
Web changesandasp4 upload
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
 
PHP Framework Battle
PHP Framework BattlePHP Framework Battle
PHP Framework Battle
 
JSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End FrameworksJSF 2.3: Integration with Front-End Frameworks
JSF 2.3: Integration with Front-End Frameworks
 
Rich Assad Resume
Rich Assad ResumeRich Assad Resume
Rich Assad Resume
 
Weblogic domain
Weblogic domainWeblogic domain
Weblogic domain
 
Future of SharePoint Dev SPFx Extensions
Future of SharePoint Dev   SPFx ExtensionsFuture of SharePoint Dev   SPFx Extensions
Future of SharePoint Dev SPFx Extensions
 
Codeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginnerCodeigniter, a MVC framework for beginner
Codeigniter, a MVC framework for beginner
 
Programming with Azure Active Directory
Programming with Azure Active DirectoryProgramming with Azure Active Directory
Programming with Azure Active Directory
 

Ähnlich wie SeedStack, the lean development stack

20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-finalDavid Lapsley
 
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudDevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudCloudify Community
 
Open a dx at fosdem
Open a dx at fosdemOpen a dx at fosdem
Open a dx at fosdemFabMob
 
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...Daniel Bryant
 
Building Drupal Sites with Components
Building Drupal Sites with ComponentsBuilding Drupal Sites with Components
Building Drupal Sites with ComponentsDerek Reese
 
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureAlberto Diaz Martin
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidConAmir Zuker
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
KB Seminars: Working with Technology - Platforms; 10/13
KB Seminars: Working with Technology - Platforms; 10/13KB Seminars: Working with Technology - Platforms; 10/13
KB Seminars: Working with Technology - Platforms; 10/13MDIF
 
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, Paris
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, ParisDomain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, Paris
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, ParisOW2
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...Srijan Technologies
 
Tecnologias Free e Open Source na Plataforma Microsoft
Tecnologias Free e Open Source na Plataforma MicrosoftTecnologias Free e Open Source na Plataforma Microsoft
Tecnologias Free e Open Source na Plataforma MicrosoftGustavo Malheiros
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsCasey Lee
 
Erik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by dockerErik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by dockerAgile Impact Conference
 
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)Lucas Jellema
 
AWS Cloud Essentials - An Overview
AWS Cloud Essentials - An OverviewAWS Cloud Essentials - An Overview
AWS Cloud Essentials - An OverviewEdureka!
 

Ähnlich wie SeedStack, the lean development stack (20)

20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final
 
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudDevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
 
Open a dx at fosdem
Open a dx at fosdemOpen a dx at fosdem
Open a dx at fosdem
 
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...
CloudNativeLondon 2018: "In Search of the Perfect Cloud Native Developer Expe...
 
Building Drupal Sites with Components
Building Drupal Sites with ComponentsBuilding Drupal Sites with Components
Building Drupal Sites with Components
 
Salesforce DX for Admin v2
Salesforce DX for Admin v2Salesforce DX for Admin v2
Salesforce DX for Admin v2
 
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
 
Salesforce DX for admin
Salesforce DX for adminSalesforce DX for admin
Salesforce DX for admin
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
KB Seminars: Working with Technology - Platforms; 10/13
KB Seminars: Working with Technology - Platforms; 10/13KB Seminars: Working with Technology - Platforms; 10/13
KB Seminars: Working with Technology - Platforms; 10/13
 
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, Paris
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, ParisDomain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, Paris
Domain-Driven Design with SeedStack, OW2con'2018, June 7-8, 2018, Paris
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
 
Tecnologias Free e Open Source na Plataforma Microsoft
Tecnologias Free e Open Source na Plataforma MicrosoftTecnologias Free e Open Source na Plataforma Microsoft
Tecnologias Free e Open Source na Plataforma Microsoft
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome Apps
 
Erik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by dockerErik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by docker
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
 
AWS Cloud Essentials - An Overview
AWS Cloud Essentials - An OverviewAWS Cloud Essentials - An Overview
AWS Cloud Essentials - An Overview
 

Kürzlich hochgeladen

Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...panagenda
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPTiSEO AI
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jNeo4j
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 

Kürzlich hochgeladen (20)

Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 

SeedStack, the lean development stack

  • 1. The lean development stack Adrien LAUER SeedStack
  • 2. 2 of 24 History Project started late 2012 10+ years experience of frameworks Custom Open-Source: mainly Spring
  • 3. 3 of 24 Goals Build a common development stack Shared across all business entities Manufacturing / logistics / finance / sales / R&D / … Being extensible Enabling re-use
  • 4. 4 of 24 Organization Core team at PSA Peugeot Citroën Other members at various locations http://seedstack.org https://github.com/seedstack Twitter: @seedstack IRC: #seedstack on freenode
  • 5. 5 of 24 Get presentation code samples at https://github.com/adrienlauer/poss-samples
  • 6. 6 of 24 Core values Opinion A reference architecture for your apps Modularity Single responsibility principle Extensibility Open-Closed principle
  • 7. 7 of 24 Foundation Java Set of technologies to build backends Web Set of technologies to build Web apps Business Domain-Driven Design (DDD) approach
  • 8. 8 of 24 Foundation Java Set of technologies to build backends Web Set of technologies to build Web apps Business Domain-Driven Design (DDD) approach
  • 9. 9 of 24 Java focus Kernel + plugin architecture One plugin per concern Scalable One global Guice injector Unified configuration Plugin discovery Classpath scan Initialization
  • 10. 10 of 24 Sample plugin public class MyPlugin extends AbstractPlugin { private final Set<Class<?>> annotatedClasses = new HashSet<>(); @Override public String name() { return "my-plugin"; } @Override public Collection<ClasspathScanRequest> classpathScanRequests() { return classpathScanRequestBuilder().annotationType(Service.class).build(); } @Override public InitState init(InitContext initContext) { annotatedClasses.addAll(initContext.scannedClassesByAnnotationClass().get(Service.class)); return InitState.INITIALIZED; } @Override public Object nativeUnitModule() { return (Module) binder -> annotatedClasses.forEach(binder::bind); } }
  • 11. 11 of 24 So we built the core… Contains the kernel Provides basic features Launching Configuration IoC Service commands Diagnostics
  • 12. 12 of 24 Then we scaled up… 10+ plugins Testing Security Transactions REST Metrics / health Web … Adding new technologies is quick and easy All PSA requirements have been covered 50 satisfied projects over two years
  • 13. 13 of 24 Foundation Java Set of technologies to build REST backends Web Set of technologies to build Web apps Business Domain-Driven Design (DDD) approach
  • 14. 14 of 24 Web focus Loader + fragments architecture A fragment per concern Composable Configure and initialize an SPA Fragment download Configuration computing Initialization
  • 15. 15 of 24 Sample fragment { "id": "demo", "name": "W20 POSS demo", "modules": { "user": "{demo}/modules/user" }, "i18n": { "en": [ "{demo}/i18n/messages-en.json" ], "fr": [ "{demo}/i18n/messages-fr.json" ] }, "routes": { "hello": { "template": "<div class="container"><h1>Hello World!</h1></div>", "hidden": true }, "user": { "templateUrl": "{demo}/views/user.html", "controller": "UserController" } } }
  • 16. 16 of 24 Main features Based on popular libraries AngularJS RequireJS Advanced enterprise features Multi CSS framework Bootstrap Angular material Theming support 2 Open-Source themes 3 PSA proprietary themes
  • 17. 17 of 24 Foundation Java Set of technologies to build REST backends Web Set of technologies to build Web apps Business Domain-Driven Design (DDD) approach
  • 18. 18 of 24 Level of involvement Annotations Interfaces Base classes
  • 20. 20 of 24 Main features DDD semantic + injection Easy-to-use default implementations Smart DTO / domain mapping Built-in identity generation strategies
  • 21. 21 of 24 Sample class SaleServiceImpl implements SaleService { private final Repository<Seller, Long> sellerRepository; private final DomainRegistry domainRegistry; @Inject public SaleServiceImpl(Repository<Seller, Long> sellerRepository, DomainRegistry domainRegistry) { this.sellerRepository = sellerRepository; this.domainRegistry = domainRegistry; } @Override public void updateBonus(Order order, Long sellerId) { Seller seller = sellerRepository.load(sellerId); if (seller == null) { throw new IllegalArgumentException("Seller " + sellerId + " cannot be found"); } BonusPolicy bonusPolicy = domainRegistry .getPolicy(BonusPolicy.class, seller.getBonusPolicy()); double orderBonus = bonusPolicy.computeBonus(order); seller.addToMonthlyBonus(orderBonus); sellerRepository.save(seller); } }
  • 22. 22 of 24 Extensibility 20+ official add-ons Audit, ElasticSearch, I18n, IO, JavaMail, JCache, JDBC, JMS, JPA, LDAP, MongoDB, Monitoring, Neo4J, Redis, Scheduling, Solr, Spring-bridge, Validation, W20-bridge, Web-Services, … Open to third-party http://seedstack.org/addons PSA uses only 3 proprietary add-ons
  • 23. 23 of 24 Distribution Global packaging of all modules Each organization can roll its own distribution Open-Source reference distribution released 3 times per year 16.4 16.7 16.11
  • 24. 24 of 24 Thank you! Website: http://seedstack.org GitHub: https://github.com/seedstack IRC: #seedstack on freenode Contributions welcome! Pull requests Documentation fixes Issues