Duo World was a cloud-based software development platform (PaaS) where developers can register on the platform and start developing applications. I did this presentation to highlight the architectural aspects of the platform.
2. What is Duo World
• A PaaS that enables the users to develop apps and host their apps in a
“developer portal” for public access or to sell their apps in the market
place.
• First any person can register as an end-user and use the apps hosted
by developers by joining the public portals.
• Users can upgrade their account to develop, host and publish apps.
• Developers could purchase apps developed by other developers and
integrate those apps to their portals.
• All the developer tenants are inter-connected using the “cloud event
bus”
2
3. High Level Architecture of Duo World
Local
Repository
Local
Repository
Load Balanced Cloud Event Bus Backbone
Cloud Event Bus
Cloud Event Bus
Global App
Repository
Duo World App
Store
Duo World
User
Registration 3
4. Prominent Components of Duo World
• User Portal – Enables the user to manage his account.
• DevStudio – IDE that provides features for developers to develop apps
for the platform.
• App Portal – Enables the developer to host apps for public access for
the end-users.
• App Market – Enables a developer to purchase apps published by
other developer.
• Tenant Watch – Handles administration tasks such as configuring,
monitoring of tenant resources.
4
5. Duo World Architecture
• Duo World is based on a hybrid of following architectural styles;
• Event Driven Architecture.
• Resource Oriented Architecture.
• Service Oriented Architecture.
5
6. Service Layer
Presentation
Layer
Duo World Eco-System
6
Cloud Event Bus
Tenant Watch
UI Microkernel
User PortalApp LauncherDev Studio App Market
Duo Object
Store
Process
Manager
Process
Scheduler
Duo Auth
Workflow
Engine
7. Duo Services Framework
7
Go Service Framework
Authentication
Interfaces
Configuration
Interfaces
Monitoring
Interfaces
Statistic
Interfaces
REST API
Documentation
Cloud Event Bus
Integration
Distributed
Logging
Interfaces
• Reusable components to develop the service layer components in the duo world
eco system.
• Reduces technical complexity to develop backend services by providing interfaces
to handle most commonly used functionality.
• Implemented using Golang.
8. UI Microkernel
• Based on the Microkernel concept of Operating System Architectures.
• Based on the concept of modularity.
• Implemented in the Presentation Layer using Angular.JS.
• Provides transparent access to the backend services using reusable interfaces.
• Part of the SDK where developers could use its interfaces to develop their apps.
8
UI Microkernel
Authentication
System Wide
Event Handling
Chat
Functionality
WebRTC Object Store
Backend
Monitoring
Application
Execution
9. Cloud Event Bus
• Middleware that integrates servers in the duo world eco-system, Integrates
external systems and provides evening and messaging mechanisms.
• Provides features such as;
• Distributed locking.
• Coordination between servers.
• Attempts to centralize global state.
• Centralizes Configuration
• Can be used to integrate with;
• Facebook
• Twitter
• Gmail
• SMS Gateways
• Can be used for fault tolerant features because every server in the eco-system is
connected to the event bus.
• Implemented using Node.JS 9
10. RabbitMQ Server
Rabbit MQ Docker
Rabbit MQ
Server
Docker
Agent
Server
Agent
Elastic Search Server
Elastic Search Docker
Elastic Search
Server
Docker
Agent
Server
Agent
Cloud Event Bus – Deployment View
10
Cloud Event Bus
Application Server 1
Server
Agent
Object Store Docker
Object Store Agent
DuoAuth Docker
DuoAuth Agent
Server 2
Process Manager Docker
Service Console Agent
Process Dispatcher Docker
Process Dispatcher Agent
Couchbase Server 1
Couchbase Docker
Couchbase
Server
Docker
Agent
Server
Agent
Couchbase Server 2
Couchbase Docker
Couchbase
Server
Docker
Agent
Server
Agent
Server
Agent
11. Cloud Event Bus – Logical View
11
Endpoint Manager
Client Registry
Command Manager
Chat Message Get All Users
Web Sockets TCP REST
Authentication Manager
Event Manager
Change User State
Integration Manager
Facebook Twitter Object Store RabbitMQ
Redis Session
Storage
OAuth Endpoint
12. Tenant Watch
• Application that centralizes all the administration tasks related to a
tenant.
• Monitor and control and configure dockers, servers and services using
agents.
• Configure global settings.
• Manage users connected to a tenant.
• Uses the services provided by UI Microkernel.
12
13. Duo Object Store
• REST API for developers to manipulate data using CRUD operations.
• Integrates with multiple types of databases (Key Value, Document, Big
Table, and Relational).
• Can be configured use various databases.
• Ability to replicate data maintaining the atomic property.
• In addition to the REST interface there’s a Golang API for Golang
developers.
13
14. Object Store Architecture
14
Object Store Data Service
Store Dispatcher
Storage Manager
Replicated Storage Engine
Cassandra Storage
Engine
Hive Storage Engine
Redis Storage Engine
Mongo Storage Engine
Queued Storage Engine
RabbitMQ
Dispatcher
Store Configuration ManagerSecurity Manager Schema Validator
Golang Library
Elastic Storage Engine
Couch Storage Engine
DuoWorld
15. DevStudio
• IDE that enables developers to develop apps on DuoWorld platform.
• Based on Codiad – an Open Source IDE, which can be extended using
plugins.
• Plugins to visually design user interfaces or workflows.
• Publish apps for the portal
15
19. App Portal
• Enables developers to publicly host their applications to be accessed
by end-users.
• Used UI Microkernel.
• Available with Apache Cordova for cross-platform mobile
applications.
19