Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Asanka Abeysinghe
Cell-based Architecture An Emerging Architecture Pattern for Agile Integration
Deputy CTO & VP, Architecture - CTO Office WSO2 Inc.
2019
1997 2003
Architect
2012
VP Solutions Architecture
2001 2008
Director Solutions
Architecture
Deputy CTO
Open Source
Distributed Computing
Programmer COBOL
OLE, OLE2 COM, COM+ DCOM CORBA
Java DeveloperJ2EE MMS
286-DX4
Eventing FIX HL7
Committer
CONNECT-health
Global architecture team 500+ customers Champions program
Chief Architect2005
QSP AR Trusted advocate
Game hacker C++ programmer
Age-16
Hedge fund tools
Ref. Architecture Ref. Methodology Evangelize
2018
Middleware Developer/Architect
Entrepreneur
Objectives
#1 why: created a new pattern
#2 introduce: Cell-based architecture
picture credit: https://www.flickr.com/
Motivation
Centralized & Layered
picture credit: https://www.flickr.com/photos/kaktuslampa/
picture credit: https://www.flickr.com/photos/69929929@N06/
Powerpoint Architects
picture credit: https://www.flickr.com/photos/johnerlandsen/
Reality of the Enterprise
Brownfield > Greenfield
picture credit: https://www.apstra.com/home/landscape-of-meadow-field-with-the-changing-environment-2/
Legacy, monolithic Microservices, sprawl
Reference Implementations
picture credit: https://www.marinersmuseum.org/
picture credit: http://unlocked.footlocker.com/
Underutilization of the Technology
Gap: architecture | development | deployment
picture credit: https://www.flickr.com/photos/28994379@N02/
picture credit: https://www.solarpowerworldonline.com/2017/07/georgia-contractor-sells-farmers-solar-tough-market/
Dependency management
picture credit: https://www.flickr.com/photos/tiocfaidh_ar_la_1916/
Architecture Patterns
Timeline
Background: Layered Architecture
picture credit: https://www.flickr.com/photos/23119666@N03/
A platform with an agile team 100 APIs, 60 message flows, 80 services, n DBs Multi-tenanted, 3 active tenants First release after 3 years
picture credit: https://www.flickr.com/photos/imcountingufoz/
Rise of Microservices
Pragmatic Microservices
Netflix: APIs
Uber: Edge Gateway
eBay: API Facade
Gartner: Mini Services
Background: Layered Architecture with MSA
Background: Segmented Architecture
BS-1 BS-2 BS-n
G-1 G-2
US-1 US-n
Platform of PlatformsPlatform (shared capabilities)
Proj
ect 1
Proj
ect 2
Proj
ect 3
Proj
ect n
Platform (shared capabilities)
Proj
ect 1
Proj
ect 2
Proj
ect 3
Proj
ect n
Platform (shared capabilities)
Proj
ect 1
Proj
ect 2
Proj
ect 3
Proj
ect n
Platform (shared capabilities)
Proj
ect 1
Proj
ect 2
Proj
ect 3
Proj
ect n
CI/CD User Store
picture credit: https://www.flickr.com/photos/ableman/
Making of……
picture credit: https://commons.wikimedia.org/wiki/User:Frank_Schulenburg CC BY 3.0
picture credit: https://clutchpoints.com/phil-jackson-talks-about-the-kobe-bryant-michael-jordan-comparison/
Paul Fremantle - CTO, Co-Founder - WSO2
Building the Concept
Business vs technical services
picture credit: https://www.flickr.com/photos/arpadlukacs/
Service: Technical definition
A code exposes through an interface that describes a collection of operations that are network accessible using a standardized messaging protocol.
Service: Business definition
Software components that can be spontaneously discovered, combined, and recombined to provide a solution to a business problem.
Microservice: Technical definition
A microservice must have a single purpose and be loosely coupled in design and deployed independently of other microservices. "Micro" is a concept of scope rather than size.
Microservice: Business definition
Microservices is an approach to application development in which a large application is built as a suite of modular components or services. These services are built around business capabilities.
Group of (Micro)services
The cell is the basic structural, functional, and
biological unit of all known living organisms
Cell-based Reference Architecture
Component: Atomic Units
A component represents a process or business logic running in a container, serverless environment, or an existing runtime. A component is designed based on a specific scope, which can be independently run and reused at the runtime.
Cell: Units of Enterprise Architecture
A cell is a collection of components, grouped from design and implementation into deployment. A cell is independently deployable, manageable, and observable.
Cell:Component 1:M 1:1
Connected Cells
picture credit: https://www.medicalnewstoday.com/
Control Plane: - Signaling of the network - Makes decisions about the traffic flow
Data Plane: - Forwards traffic between hops - Takes data packets
picture credit: https://www.flickr.com/photos/teflon/
Management Plane: - Configure - Observeabiltty, Monitor
Inter and Intra Cell communication
Local-meshGlobal-mesh
DP- data plane CP- control plane MP- management plane
Connected CellsCell gateway (ingress)
Sidecar (egress)
Adaptor (egress)
Ambassador (egress)
API-centric Architecture
picture credit: https://www.flickr.com/photos/hugh_nelson/
API-centric Architecture Pull APIs - RESTful HTTP, gRPC Push APIs - Events JMS, AMQP, SMTP - Streams Kafka, MQTT
Gateway Pattern
picture credit: https://www.flickr.com/photos/ell-r-brown/
Automated Governance (Re)-enables Flow
Policy Store (Registry)
Observability (Monitoring/
Analytics)
Policy Enforcement
(GW)
Automated governance is made of three things: A source of truth:
Policy store/registry
Enforcement of the policy Gateway or plugin attempting to keep the desired state
Observability How close to the desired state are we?
Security of Cells
picture credit: https://www.flickr.com/photos/laurelfan/ https://www.flickr.com/photos/sahdblunders/
Security of Cells
Developer Experience (DX) of a Cell
Creating CellsBrand new Cell
Existing (micro)services
Update an existing Cell
Create a new version
Lifecycle of a Cell
picture credit: https://www.flickr.com/photos/rincon_de_lula/
Structured Agility
Versioned Components
Versioned Cells
Dependency managed
Autowired
Reusable
Enhanced MSA & CNA
Cell-based Enterprise Architecture
Cell TypesCell Type Components
Logic Microservices, Functions, MicroGateways, lightweight storages
Integration MicroESB or other integration microservices, lightweight storage and/or cache
Legacy Existing systems, legacy services
External SaaS and partner systems
Data RDBMS, NoSQL, File, Message Broker*
Identity IDP, user stores
Channel Web Apps, IoT, mobile apps
Reference Implementation L0
Reference Implementation L1
Human-centric Architecture
picture credit: https://www.vertoanalytics.com/human-vs-data-centric-marketing/
Cells and Podular Organizations
picture credit: https://www.flickr.com/photos/woordenaar/
Cell Boundaries
Defining Cell boundaries The design of systems has always required an approach to the clustering of functionality, and it remains an open Computer Science problem - so don't expect a definitive answer!
The number of component-component connections within a cell should be higher than the number that crosses the cell boundary.
Other approaches such as Domain-driven Design (DDD) may help, but fundamentally the cell model is there to provide team boundaries.
Hence the size of a cell should be based on the size, responsibility, and output of a team - and the size and output of a team based on team concepts.
Cell-based architecture aims to create business focussed architectural constructs that can reuse at a higher level, so naturally organizing the teams and cells around business functions is essential.
Measure the success
picture credit: https://www.marketingdonut.co.uk/direct-marketing/running-a-direct-mail-campaign/getting-the-measure-of-your-marketing
https://www.tasktop.com/blog/5-best-metrics-youve-never-met/ https://dzone.com/articles/reducing-mttr
Mean Time to Repair
https://www.tasktop.com/blog/5-best-metrics-youve-never-met/https://dzone.com/articles/reducing-mttr
Self-contained
Deployable as a unit
Independently elastic
Data, control & management plane
Summary: Cell-based Architecture
My Contribution: walk the talk
picture credit: https://www.omgubuntu.co.uk/2018/06/microsoft-buying-github
picture credit: https://www.flickr.com/photos/josephmorris/
Just a (steady) start
https://github.com/wso2/reference-architecture
picture credit: https://www.flickr.com/photos/vasile23/
https://github.com/wso2/reference-methodology
Reference Methodology
https://cellery.io/
Build, run, and manage code-first composites on Kubernetes
Cellery - simple composition and graphical view
A cloud-native programming language for microservices and APIs
- A compiled, transactional, statically and strongly typed programming language with textual and graphical syntaxes.
- Incorporates fundamental concepts of distributed system integration
- Offers a type safe, concurrent environment to implement microservices with distributed transactions, reliable messaging, stream processing, and workflows
- Compiles into container images for deployment on Kubernetes and Docker
https://ballerina.io/
Ballerina - code and visual syntax in sync
picture credit: https://www.flickr.com/photos/infomatique/
Invitation to consume and contribute
https://ballerina.io
https://cellery.io
https://github.com/wso2/reference-architecture
https://github.com/wso2/reference-methodology
Rate today ’s session
Session page on conference website O’Reilly Events App
@asankama
THANK YOU
https://www.linkedin.com/in/asankaabeysinghe/