Flamingo is a open source, go based, framework for pluggable web projects.
With flamingo-commerce you can build individual „commerce experience applications“.
This slide explains the thoughts and ideas behind flamingo and gives a short overview of the flamingo ecosystem.
2. Flamingo is a open source, go based, framework
for pluggable web projects.
Useful to build applications with modern UI in your
microservice architecture.
With flamingo-commerce you can build individual
„commerce experience applications“
3. Strategic background and motivations
Flamingo Overview & Ecosystem
Flamingo Basic Example
Flamingo Commerce Details
5. Strategic background and motivation for flamingo
How would you love to
develop commerce applications
Is PHP the right development
language for the future
?
?
6. Strategic background and motivation for flamingo
• Performance:
Highly dynamic fast content rendering
Individual Personalization and Context aware rendering
• Flexibility in a Microservice architecture:
Flexible to use in microservice oriented individual architectures.
Useable with „headless“ (commerce) services
No Build and deploy overhead
• Frontend development performance:
Decouple frontend build pipeline from „backend“ logic
• Developer Experience:
Effective and Fun to use!
Fast team ramp up and low learning curve
• Clean architecture
How would you love to
develop commerce applications
7. Strategic background and motivation for flamingo
Is PHP the right development language
for the future??
8. Strategic background and motivation for flamingo
Is PHP the right development language
for the future?
• Overhead:
Interpreter and Webserver need to run
• Always from 0 to 100:
No running application
Each request need to bootstrap and prepare and after rendering „dies“
Managing state between requests requires extra effort
• Performance:
No concurrency features
Compared to other languages often inefficient
• Missing language features:
Not typesafe (without extra effort) -
=> more bugs / harder refactorings
• Learning
ca 11.000 functions/commands in PHP7!
9. Strategic background and motivation for flamingo
„go“ - an alternative to PHP
Go is an open source programming language
that makes it easy to build simple, reliable, and
efficient software.
https://golang.org/
10. Strategic background and motivation for flamingo
• 2012 Go 1.0
• Developed by Google
• Easy to learn: Goal was to be able to scale with in big dev
teams
„go“ - an alternative to PHP
11. Strategic background and motivation for flamingo
Why PHP is not the right language for modern enterprise
web applications!
Web Request: One process per request Running application
+ Webserver + Interpreter (Webserver included)
Concurrency: not really yes
Amount of Code: 100% 30%
Performance: - ++++
Interest: decreasing jumping up
Productivity: + ++
12. Strategic background and motivation for flamingo
What should be the stack to develop future commerce
applications
• PHP based
• Monolitic
approach
• Not build for
microservice style
distributed
architecture
• high learning curve
• hard to find good,
experienced and
motivated
developers
• Opinionated
templating
Magento? oroCommerce? Spryker?
• A lot of features
• Proofen in many
production setups
• existing ecosystem
• …
Prestashop? Shopware?
Magento Lizard and Pumpkin Vue Storefront
13. Strategic background and motivation for flamingo
The birth of the bird
Using our collected experience and
start a new framework for building
modern and blazing fast
„commerce experience
applications“
What we need seems not to exist
14. Strategic background and motivation for flamingo
The birth of the bird
2016 - Flamingo was born caused by the
lack of alternatives
2017/18 - E-Commerce Frontend for
2018 - Used in many more production project
2018 - Several clean ups
- Focus on open sourcing
- Trainings and Examples
16. Status of flamingo
• Build for Microservice environments:
• Architecture makes it easy to connect to different „backend“ services
• Ideal as „Head“ for headless commerce services
• Resilience and Test Pattern „build in“
• Not build to be the next Feature complete Ecommerce Monolith
• Lightweight and easy to learn
• Decoupled and powerful Frontend Tools and Pipeline
• Scalability and Performance
• Dynamic page rendering time <20ms
• Asyncronous rendering
• Easy horizontal scaling
• Clean Architecture:
• Usage of Domain Driven Design to craft elegant software systems
• USage of Ports and Adapters for clean layering and seperation
Design Goals
17. Status of flamingo
Flamingo
Flamingo Carotene
Flamingo Commerce
flamingo-commerce-adapter-
standalone
Commerce Demo
Example-*
Flamingo is a go based, framework for pluggable web
projects. Core and Framework modules
Is the frontend build pipeline featuring pug and atomic
design pattern.
Example and Demo projects with Trainings - to get started.
flamingo modules that provide „domain“, „application“
and „interface“ logic around commerce features.
These modules can be used with your own „Adapters“ to
interact with any API or microservice you want.
Adapters for the flamingo commerce modules that can be
used standalone
Demo Shop for flamingo-commerce - using the standalone
adapters
18. Status of flamingo
Module Overview
Core/Packages (basics)
form locale redirects gotemplate
healthcheck internalauth cache zap
Framework/Packages
config
router template
(interface)
web
event session
dingo
controller
pugtemplate
…
opencensus
testutil
21. Status of flamingo
Structure of a typical flamingo project
Your custom modules
Flamingo
Flamingo: Core and Framework.
(Dependency Injection; Configuration;
Security; Logging; Routing; Resilience
Pattern; …)
Your logic and features
(e.g. Backend for Frontend Pattern)
Flamingo Carotene helper and build pipeline
modern frontend templating
based on pugProject Templates
34. Flamingo Architecture Examples:
„Magento 2 + Flamingo“
flamingo e-commerce project on top of Magento2
Magento 2
(With custom extensions)
Product Adapter
Search Adapter
Category Adapter
Cart Adapter
CMS
Order Adapter
Customer Adapter
Flamingo can for example be used as „Head“ for a „Headless“ Magento 2
Setup.
In this case we still recommend to provide product data from a realtime search
(e.g. implemented with elasticsearch)
flamingo-commerce-adapter-magento
35. Flamingo Architecture Examples:
„Magento 2 + Flamingo“
flamingo e-commerce project on top of Magento2 and Elasticsearch
Magento 2
(With custom extensions)
Cart Adapter
CMS
Order Adapter
Customer Adapter
Flamingo can for example be used as „Head“ for a „Headless“ Magento 2
Setup.
In this case we still recommend to provide product data from a realtime search
(e.g. implemented with elasticsearch)
flamingo-commerce-adapter-magento
product search service
(e.g. with Elastic
Search)
On the fly
product import
Product Adapter
Search Adapter
Category Adapter
elasticsearch adapter
36. Flamingo Architecture Examples:
„Commerce Microservices + Flamingo“
Some Flamingo Commerce Project
product
search
service
Cart
Service
SSO
(Keycloak)
OpenId Flow
Stock
Service
CMS
Order
Management Fullfillment
Payment
PSP
PIM
User
Service
/ CRM
Flamingo My
Account
Project
some project specific modulessome project specific modules
adapter
37. Flamingo Architecture Example:
„Standalone Flamingo“
Some Flamingo Commerce Project
SSO
(Keycloak)
flamingo-commerce-adapter-standalone
„Flamingo-commerce-adapters-standalone“:
Adapters for most Flamingo Commerce Ports.
They might be a good start for your own project.