SlideShare una empresa de Scribd logo
1 de 107
AppliFire Blue Print Design Guidelines
App Development Workshop 2015 Fall
“It is NOT the strongest of the species that survives, nor the most intelligent that
survives. It is the one that is the most adaptable to change.”
- Charles Darwin
AppliFire Platform Foundation Principles
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
2
Developer’s Reaction
Unification Simplicity
What
??!!
Architect’s ReactionProject Manager’s Reaction
10( where n >= 0 )
SpeedDeveloper Productivity
n+2
AppliFire Blue Print Design Guidelines
1. How a Software Project Starts
1. Requirement Specs - BDD
2. AppliFire Blue Print Definition & Structure
3. Event Sourcing & CQRS
4. 2 Phase Commit / Stored Procedures
5. Domain Driven Design
6. UI Design : Model, View, ViewModel + View Controller
7. Traditional Architecture Vs. Onion Architecture
2. AppliFire RAD Design Modules (13-25)
1. Project Creation (Add-ons, Tech Stack, Blue Prints)
2. Requirement Specs
3. Domain Modeling (Entities, Aggregate Roots)
4. Object Query Builder
5. Repository
6. Domain Service and Specifications
7. App Service Studio (Internal & External Services)
8. Visual Studio (Data Visualizer, Visual Designer)
1. App Setup and Build
3. DDD : Architecture & Design
1. Understanding Bounded Context
2. Understanding Aggregate Root
3. Anti Corruption Layer
4. Anemic Domain Model
5. Use Case Comparison : Procedural Vs. Domain Driven Design
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
3
Objectives of the Workshop
Map Best Design Practices &
Guidelines To
AppliFire RAD Design
Features
To Auto Generate High Quality
Error Free Code base with best
Architecture and Design.
Code base can be exported to
standard IDE for further
enhancements if required.
Design
Behavior Driven Development
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
4
Login Example
Your Project
Features
Scenarios
Steps
Step Definitions
Support Code
Automation Library
Your App
BusinessFacing
TechnologyFacing
GIVEN
What the
software will look
like to the user
WHEN
The things that
the user will do
THEN
What the user
should expect
GIVEN I launch the app login page
WHEN I fill in login ID with my login id
AND I fill in the password with my password
AND I press the enter key or Click the sign-in button
THEN After authentication, I am on the Home Page
ATM Example
GIVEN The account is in credit
WHEN The customer requests cash
AND Ensure cash is dispensed
AND Ensure the card is returned
THEN Ensure that the account is debited
AND the card is valid
AND The dispenser contains cash
Post beta release
Blue Print Structure
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
5
Application Blue Prints1 {JSON}
Class of Blue Prints Format How to Create
Business
Component
Blue Prints
Business
Component
Blue Print
2 {JSON}
Business Rules, Algorithms, Notifications
Domain
Blue Prints
Domain
Blue Prints
Domain
Blue Prints
Domain
Blue Prints
3 {JSON}
Data Models, Relationships, Rules, Functions
Blue Prints are design documents and
technology & database agnostic.
UML 2.5
Blue Print Example
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
6
HCM Blue Prints1 {JSON}
Case Study
Human Capital Management Format How to Create
HR Blue
Prints
Payroll Blue
Prints2 {JSON}
Business Rules, Algorithms, Notifications
Employee
Blue Prints
Tax
Blue Prints
Policy
Blue Prints
Appraisal
Blue Prints
3 {JSON}
Data Models, Relationships, Rules, Functions
Attendance
Blue Prints
Holidays
Blue Prints
Blue Prints are design documents and
technology & database agnostic.
UML 2.5
Model, View, View Model + View Controller
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
7
Resources
& API Calls
WOW! Weave Once Works anywhere
Benefits of Decoupling
• Simplified Unit testing
• Modular Architecture
• Clean Separation of UI, Business
Logic and Model
Just wire it up!
DON’TCODE
From Views to Repositories,
Journey of a Developer 
Separation of Duties
Event Sourcing & CQRS
Command and Query Responsibility Segregation
• In traditional data management
systems, both commands (updates
to the data) and queries (requests
for data) are executed against the
same set of entities in a single data
repository.
• CQRS is a pattern that segregates the
operations that read data (Queries)
from the operations that update
data (Commands) by using separate
interfaces.
• CQRS should only be used on specific
portions of a system in Bounded
Context (in DDD).
• CQRS should be used along with
Event Sourcing.
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
8
MSDN – Microsoft https://msdn.microsoft.com/en-us/library/dn568103.aspx | Martin Fowler : CQRS – http://martinfowler.com/bliki/CQRS.html
CQS :
Bertrand Meyer
Axon
Framework
For Java
Java Axon Framework Resource : http://www.axonframework.org
Greg
Young
Event Sourcing and CQRS Design Example
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
9
Domain
The example focus on a concept of a Café which tracks the visit of an individual or group
to the café. When people arrive at the café and take a table, a tab is opened. They may
then order drinks and food. Drinks are served immediately by the table staff, however
food must be cooked by a chef. Once the chef prepared the food it can then be served.
Source:http://cqrs.nu/tutorial/cs/01-design
Events
• TabOpened
• DrinksOrdered
• FoodOrdered
• DrinksCancelled
• FoodCancelled
• DrinksServed
• FoodPrepared
• FoodServed
• TabClosed
Commands
• OpenTab
• PlaceOrder
• AmendOrder
• MarkDrinksServed
• MarkFoodPrepared
• MarkFoodServed
• CloseTab
Exception
• CannotCancelServedItem
• TabHasUnservedItem
• MustPayEnough
Commands are things that indicate
requests to our domain. While an
event states that something certainly
happened, a command may be
accepted or rejected.
An accepted command leads to zero
or more events being emitted to
incorporate new facts into the
system. A rejected command leads to
some kind of exception.
An important part of the modeling
process is thinking about the things
that can cause a command to be
refused.
Aggregates
• A Single Object, which doesn’t
reference any others.
• An isolated Graph of objects, with
One object designated as the Root
of the Aggregate.
An Event Stream which is
an immutable collection of
events up until a specific
version of an aggregate.
The purpose of the version
is to implement optimistic
locking:
Event Sourcing & CQRS : Banking App Example
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
10
Source: http://plainoldobjects.com
Applies Eventually Consistent
Concept instead of 2 Phase
Commit
Domain Driven Design
16December2015
11
Source: Domain-Driven Design Reference by Eric Evans
Traditional Architecture Vs. Onion Architecture + DDD
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
12
Presentation
Business Logic (BLL)
Data Access (DAL)
Infrastructure
Others
File
system
User Interface
G
Application Services
M
Domain Services
Domain
Model
Services
Database
Order
ViewController
Product
JPARepository
Implementation
Product,
ProductRepository
Interface
OrderProcessing
DomainService
Interface
OrderProcessing
DomainService
Implementation
Source: Onion Architecture
By Jeffrey Palermo, Ex Microsoft
• Interface Driven
• Dependency Injection
• Auto wiring
• Adaptable to future
changes / enhancements
UserName
Available
Order Data
Validation
Order
Discount
Validation
AppliFire Blue Print Objectives
1. Programming Language and Database Agnostic Blue Prints
2. Split your system into smaller modules / Bounded context
3. Put your Business Logic in Domain Models & Domain Services
4. Create Entities as Behavior Units instead of Anemic Data Structures
1. Integrate Modules with Domain Events
2. Use View Controllers to orchestrate the views – that is fetch data (Model)
from Application Services and assign to views and view model.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
13
* Post beta release
16 December
2015
14
App Life cycle Management (ALM)
App
Specs
• Create Specs
• Bounded Contexts
• Functional Test
Cases
• Traceability Matrix
Domain
Model
• Entities + Behavior
• Value Objects, DTO
• Object Query Builder
• Design Blue Prints
• Legacy Migration
Domain
Service
• Rule Engine
• Workflows
• Fact based
• Event based
Start
App
Service
• Web Services
• External
Services
• 150 Connectors
• App Connectors
Visual
Modeler
• Data Visualizer
• Data Browser
• Dashboard Builder
• Visual Designer
Build
• Generate Source
• Build Database
• Run Test Cases
• Build Project
Deploy
• Development
• Quality System
• Production System
• Docker Container
End
Project
• Create Project
• Issue Tracking
• Project
Management
Architecture & Design
AppliFire : spIDEr+ App Creation Flow
Project Creation
• Project Creation starts with the following
requirements
1. Project Info like Project Name,
Domain Name (Package Prefix for
the Java Source Code), Database
Name, Database User etc.
2. Select the required Add-ons
3. Select the mandatory App Setup
Blue Print from Blue Print Section.
App Setup Blue Print contain
default design for Authentication
and Authorization.
4. Select any other components from
already saved Blue Prints.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
15
AppliFire RAD : Project
Project Creation
1. Project Info
2. Add-ons (Health, Security, Drive, Search)
3. Technology Stack
4. Blue Print (Use Existing Blue Prints)
App Life Cycle Management
1. Issue Tracking System
2. Project Management App
3. Cloud Drive for Document Management
4. Search Engine
5. Calendar
6. Notifications
* 1.2 Release
Project Explorer
1. Similar to Eclipse Project Explorer
2. Complete View of All the Source Code
3. Tree based view of the Source Code
Project Statistics *
1. Project Dashboard
2. Developer Workspace
3. Function Point CalculatorHealth Security Logging
Search Engine Cloud Drive
Built-In Components & Frameworks
Requirement Specs
Functional Specs & Bounded Contexts
1. Create Requirement Specifications
using Behavior Driven Development
Model (BDD).
1. Features / Scenarios
2. Given / When / Then
3. Ubiquitous Language
2. Create High level Bounded Contexts
with Context Maps.
3. Create Functional Test Cases.
4. Load Testing
5. Web UI Testing
6. Smart Device App Testing
16December2015
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
16
RAD : Requirement Specs
Requirement Specifications
1. Create Features
2. Create Scenarios
3. Steps (Given / When / Then)
4. Business Perspective & Engineering
Perspective
Test Cases
1. Unit Test Cases with –ve & +ve Tests
2. Functional Tests Cases for each Scenario *
3. Cucumber based Test Driven Development *
4. UI Testing using Selenium *
5. Load Testing using Apache JMeter *
Bounded Contexts
1. Bounded Contexts
2. Context Maps (Shared Kernel, Conformist.. )
3. Up Stream / Down Stream
4. Dependent / Free
5. Add Domains to Bounded Context
* 1.2 Release
Traceability Matrix
1. Map Requirements to Bounded Context
2. Map Features and Scenarios to Domains
Domain Models
Entities / Aggregate Roots
Domain Model : Entity Definitions
1. Table Field Properties
2. Entity Type
• Master, Transaction, Part of Transaction, Bridge
3. Aggregate Root
(Ex. Order having a collection of Order Items)
1. Inverse Maps
2. Aggregate Functions
3. Aggregate Root Specific Business Logic
4. Rules for Field Validations
• Not Null, Min, Max, RegEx etc.
5. UI Properties
1. UI Template
2. UI Widget
6. Entity Relationships
7. Entities are Grouped by a Domain and lives within an a
Bounded Context
8. Transaction Locking Strategies
9. Caching Strategies
10. Multi-Tenant Strategies
16December2015
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
17
RAD : Domain Model Studio
Entity Details
1. Mapped to Domain
2. Entity Type & Field Properties
3. UI Properties (Validation Rules / Widgets)
4. Composite Key support
Entity Relationships
1. 1-1, 1-M, M-M
2. Entity Inheritance
3. Object References (Uni/Bi Directional)
Advanced Options
1. Multi Tenancy
2. Transaction Locking
3. Entity Scope (LBAC)
4. Server Side Caching
Entity Behavior
1. Aggregate Functions (Min, Max, Ave, Sum,
Count etc…)
2. Immutable Entities with Builder Pattern
3. Implement Comparator Interface
Database Properties
1. Create Index
2. Audit Log and System Info,
1. Finder Definitions in Entities
• Based on Entity Finder properties
1. Advanced Query Criteria
• Attached to respective Entities
• Repositories are enhanced with
advanced query options.
4. Supports CQRS based on Tech Stack
5. Code Feedback
1. Override the implementation Partial
or Full Code Change
2. Auto generated Code will retain the
custom code (Edited using Standard
IDE – Eclipse / Netbeans .. )
4. Scope of the Repository / Services
1. Request / Singleton
2. Session / Application
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
18
RAD : Domain Model Studio
Legacy 2 Digital Transformation
1. Reverse Engineer RDBMS Schema
2. Re-Create Business Rules
3. Use REST Services for new UI
Object Query Builder
1. Custom Named Queries : Will be
attached to Entities and automatically
modifies Repository calls.
2. Detached Queries (Q of CQRS)
3. Create Views *
4. Test Queries
5. Shows Tree View of Aggregate Roots
6. JPQL Function Supported
7. Built-In Query Execution Service as part
of the App Framework
Domain Models
Queries / Repositories
Blue Print Manager
1. Save Current Design as Blue Print
2. Consists of the Entire Technology
agnostic Design including Reports and
Custom UI information.
3. User Defined Blue Prints will be saved
and classified.
* 1.2 Release
Domain Services & Event
1. Business Rule Guide
1. Given
To prepare the system with relevant info for
processing. Ex. Fetch data using Repositories
2. When
Business Rule Conditions and Logic
3. Then
After the Rule Processing what the system
should do. Ex.
1. Persist in the database
2. Send it back to UI
3. Send it back to 3rd Party App.
2. Add Aggregate Root Specific Business Functions
Makes the entities as Behavior Units
3. Facts and Event Based Domain Service
Complex Event Processing *
4. Scope of the Domain Service / App (REST) Service
Request / Singleton / Session / Application
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
19
RAD : Domain Service Studio
3 Step Process to Build a Rule
1. Given (Based on Facts / Events)
2. When
3. Then
Decision Trees *
1. Guided Decision Tree
2. Limited Decision Tree
Key Artifacts
1. Immutable Value Objects
2. Specification Patterns
3. Domain Service
4. Anti Corruption Layer
5. Business Aspects
Built-In Sample Rules
1. Income Tax Calculation
2. Mortgage Calculation
Business Rule Processing
1. On Demand
2. Domain Event Based ** 1.2 Release
Domain Services & Event
1. HATEOAS Implementation *
Hypermedia As The Engine of App State
2. Rule Engine Code Base
1. Dynamic Rules (Rule Engine – JBoss Drools)
2. Static Code (Java Code)
3. Code Feedback
1. Partial Editing of the Code
2. Complete Editing of the Code
4. Batch Processing
1. Multi Domain Service Batch Processing
2. Scheduler based Batch Processing
3. Scheduler Configuration available in the App
5. External Service Integration
1. External Service Integration into Domain Service
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
20
RAD : Domain Service Studio
Batch Process Studio
1. Batch Process Creation
2. Integration with External Data
Endpoints
3. Scheduler Integration
4. Domain Service executed as System
user.
5. Notification System
Complex Event Processing *
1. Event Based
2. Rules for CEP
3. Different Rule Categories
Workflow Builder *
1. Case Management
2. Multi Workflow Support
3. Auto Aggregate Root UI integration
4. Integration with Doc Management
* 1.2 Release
App Service Studio
1. REST Services
1. Remote Façade *
2. Auto Creation of REST Services
3. Security and Log Management
4. Health Monitoring
2. Data Endpoint Orchestration
1. Built-In Integration Workflows
2. Built-In Connectors
3. Drag and Drop Wizard
4. More than 100 pre-built integration points
5. Support of 40+ Enterprise Integration Patterns
16December
2015
(c)2015,AlgorhythmTechPvtLtd.Pune,India
21
RAD : App Service Studio
App REST Services
1. API Monitor & Management
2. API Throttling
3. API Licensing
DEO – App Connectors
1. SAP NetWeaver Connector
2. Salesforce Connector
DEO – Protocol based Connectors
1. SOAP Services
2. REST Services
3. JMS (Java Messaging Service)
4. JDBC (Java DB Connector)
5. File Connector
DEO – Social / Cloud Connectors
1. Facebook Connector
2. Twitter Connector
3. LinkedIn Connector
4. Yammer Connector
5. Box Connector
6. Drop Box Connector
7. Amazon Cloud Services Connector
8. Google Drive / Mail / Calendar Connector
9. Open Weather Map Connector
* 1.2 Release
Visual Designer Studio
1. Data Visualizer
1. Use Object Query Builder to
create Detached Queries
2. 150 Charts to choose
3. Multiple UI Formats
4. Calendar UI for App Data
2. Visual Designer
1. Edit Auto Created UI from
Built-In Templates
2. Create Custom UI using Drag
and Drop WYSIWYG Form
Builder
3. UI Widgets for Custom UI
Creation
4. UI Context based Source Code
View
16December2015
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
22
RAD : Visual Designer Studio
Data Visualizer
1. Object Query Builder for Queries
2. Grid Configuration
3. Chart Properties (150 Charts)
4. Data Point & Chart Point Widgets
5. Drill Down Configuration
6. Search Engine Configuration
Dashboard Builder using Forms
1. Drag and Drop Report Components
2. Configure Refresh time
Visual Designer
1. Auto UI Creation Using Built-In Templates
2. Custom UI Creation with Layouts
3. UI Behaviors (UI Rules)
4. Create UI Forms from One or More REST Service
5. Based on MVVM+VC Design Pattern
6. WYSIWYG UI for Form Creation
7. Automated Field Validation Rules Model
8. Automated Form Actions from Model
Data Browser (Actionable Data)
1. Search and Browse Data
2. Launch Other Forms from Data Browser
3. Supports all Data Visualizer Features
4. Calendar UI with Aggregates
5. Launch Data Browser from Calendar Widgets
App Setup
• Once the Design is done the App
Developer needs to do the following
before the the Build Process
1. Authentication Setup
2. Create App Menus (Drag and
Drop)
3. Check Security Setup
4. Check Logger Setup
5. Check Health Setup
6. Scheduler Setup for Batch
Processes
7. Google Re-Captcha Support for
Apps
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
23
Resources : App Setup
Authentication Setup
1. Database or Active Directory
2. Password Policies
3. Session Timeouts
Menu Setup
1. Re-Arrange Auto Generated Menus
2. Create new Menu Groups
3. Select Menu Template
4. App State Save for Menus
Logger Setup
1. Log Alarm Setup
2. Logger Setup
Scheduler Setup
1. What: Select Job to be schedule
2. Whom: By Whom (System or User)
3. When: to Schedule the Job
Health Setup
1. Status and API Calls
2. Counters, Gauges, Health Metrics
Build & Deploy
• Once the Design is done the App
Developer needs to do the following to
build the App.
1. Generate the Source Code
2. Create App Menus (Drag and
Drop)
3. Check if Security, Logger and
Health Setup needs changes.
4. Build the Database
5. Run Test Cases
6. Build the Project
7. Deploy and Launch the App
• App Build Status will be displayed in
the Console.
• Support for Docker Containers &
Micro Services Architecture
• Click ‘Launch the App’ to login into
the App.
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
24
Build & Deploy
Build
1. Generate the Code base
2. Build the Database
3. Run Test Cases
4. Build Android App
5. Launch the App
6. Build App + Database + Launch App
7. Commit Source Code to Central
Repository (GIT / SVN)
Deploy
1. Deploy to Development System
2. Deploy to QA System
3. Deploy to Production System
4. Docker Container / Micro Services
5. Download the Web App
6. Download the Android App
Console
1. Shows Real-time Project Build Status
2. Shows Source Code LOC
3. Shows App Creation from Domain and
different App Layer perspective.
4. Unit Test Case Results and Details
5. Functional Test Case Results *
* 1.2 Release
25
Domain
Model
• Entities + Behavior
• Value Objects, DTO
• Object Query Builder
• Design Blue Prints
• Legacy Migration
1. Connect to RDBMS
2. Reverse Engineer Schema
(Foreign Keys, Indexes)
3. Create Bounded Contexts
1
Domain
Model
• Entities + Behavior
• Value Objects, DTO
• Object Query Builder
• Design Blue Prints
• Legacy Migration
1. Create Aggregate Roots
2. Create Value Objects
3. Add Behaviors to Entities
4. Create Custom Queries
2
1. Create Rules based
on Facts and Events
2. Create Workflows
3. Create Batch
Domain
Service
• Rule Engine
• Workflows
• Fact / Event based
• Batch Process Builder
3
App
Service
• Web Services
• External
Services
• 150 Connectors
• App Connectors
1. Create External
Services (Optional)
4
Visual
Modeler
• Data Visualizer
• Data Browser
• Dashboard Builder
• Visual Designer
5
1. Create UI for Web
and Smart Devices
2. Create Data
Visualization for
Reports and
Dashboards
3. Enable Search
Engine CapabilitiesBuild
• Generate Source
• Build Database
• Run Test Cases
• Build Project
6
1. Create the Build /
App
2. Go To Step 1 to save
the Design Blue
Prints.
Now you have
Future Proof
Design Blue Prints.
This gives you the power
to change Design and use
any technology stack in
the future.
LegacyMigration
App Design
Guidelines
BETTER DESIGN BETTER CODE BASE
Specs Design Patterns Thread Safety Scalability
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
27
1. Requirement Analysis using DDD
2. Understanding Bounded Context
3. Context Map
4. Understanding Context Map
5. Context Map Terms
Requirements
Understanding Requirement Analysis using DDD
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
28
Ubiquitous
Language
Vocabulary
shared by all
involved parties
Used in all forms of
spoken / written
communication
Ubiquitous Language with BDD
As an insurance Broker
I want to know who my Gold Customers are
So that I sell more
Given Customer John Doe exists
When
he buys insurance ABC for
$1000 USD
Then He becomes a Gold Customer
Understanding Requirement Analysis using DDD
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
29
Bounded
Context
Areas of the
domain treated
independently
Discovered as you
assess requirements
and build language
Understanding Bounded Context
16 December
2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
30
Source: BoundedContext By Martin Fowler :
http://martinfowler.com/bliki/BoundedContext.html
• DDD deals with large models by
dividing them into different
Bounded Contexts and being
explicit about their
interrelationships.
• Bounded Contexts have both
unrelated concepts
• Such as a support ticket
only existing in a customer
support context
• But also share concepts
such as products and
customers.
• Different contexts may have
completely different models of
common concepts with
mechanisms to map between
these polysemic concepts for
integration.
Context Map
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
31
Source: Domain-Driven Design Reference by Eric Evans
Understanding Context Map
1. A context map provides Global View of the system that UML or architecture
diagrams completely miss, helping us to focus on choices that are really
viable in your scenario without wasting money.
2. Each Bounded Context fits within the Context Map to show how they should
communicate amongst each other and how data should be shared.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
32
Up Stream (u) – Down Stream (d)
The upstream team may succeed
independently of the fate of the
downstream team.
Mutually Dependent
Success depends on the success of both
the teams.
Free
In which success or failure of the
development work in other contexts has
little affect on delivery.
Context Map Terms
Term Definition Action
Partnership When teams in two context will succeed or fail
together, a cooperative relationship often emerges.
Forge Partnerships
Shared
Kernel
Sharing a part of the Mode and associated code is very
intimate interdependency, which can leverage design
work or undermine it.
Keep the Kernel
Small.
Customer /
Supplier
When two teams are in upstream – downstream
relationship, where the upstream team may succeed
independently of the fate of the downstream team,
the needs of the downstream come to be addressed in
a variety of ways with wide range of consequences.
Downstream
priorities factor into
upstream planning.
Conformist Upstream has no motivation in this partnership to
keep the promise. Altruism may motivate Upstream
developers to give promises they cant keep.
Share just enough
info with upstream
to keep their
motivation.
Anti
Corruption
Layer
When the translation between two bounded context
becomes more complex, then the translation layer
takes on a more defensive tone.
(d) creates a layer in
sync own model and
matching (u)
functionality.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
33
Context Map Terms
Term Definition Action
Open Host
Service
When a subsystem has to be integrated with many
others, customizing a translator for each can bog down
the team. There is more and more to maintain, and
more and more to worry about when changes are
made.
Use a one of
translator to
augment the
Protocol to share
info (REST)
Published
Language
Translation between the models of two bounded
contexts requires a common language.
Published Language is often combined with Open Host
Service.
Use a well
documented
shared language
(JSON)
Separate
Ways
If two sets of functionality have no significant
relationship, they can be completely cut loose from
each other. Integration is always expensive and
sometimes the benefit is small.
Bounded context
with no
connection to
others.
Big Ball of
Mud
As we survey existing systems, we find that, in fact,
there are parts of systems, often large ones, where
models are mixed and boundaries are inconsistent.
Designate the
mess as a Big Ball
of Mud.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
34
35
Are solutions to general problems that
software developers faced during
software development.
These solutions were obtained by trial
and error by numerous software
developers over quite a substantial
period of time.
Design Patterns 50+
Patterns
36Patterns of Enterprise Application Architecture
Pattern Description Page
1 Domain Model
An Object Model of the domain that incorporates both behavior
and data
116
2 Service Layer
Defines an application’s boundary with a layer of services that
establishes a set of available operations and coordinates the
applications response in each operation
133
3 Repository
Mediates between the Domain and data mapping layers using a
collection like interface for accessing Domain Objects.
322
4
Data Transfer
Object
An Object that carries data between processes in order to
reduce the number of method calls.
401
5 Value Object
A Small Object, like Money, or a date range, whose equality isn’t
based on identity.
486
6
Single Table
Inheritance
Represents an inheritance hierarchy of classes as a Single table
that has columns for all the fields of the various classes.
278
7
Class Table
Inheritance
Represents an inheritance hierarchy of classes with one table for
each class.
285
8
Concrete Table
Inheritance
Represents an inheritance hierarchy of classes with one table
per concrete class in the hierarchy
293
9 Remote Facade
Provides a coarse-grained façade on fine grained objects to
improve efficiency over a network.
388
10
Optimistic Offline
Lock
Prevents conflicts between concurrent business transactions by
detecting a conflict and rolling back transactions.
416
PageNumberfromPofEAA
37Patterns of Enterprise Application Architecture
Pattern Description Page
11
Pessimistic
Offline Lock
Prevents conflicts between concurrent
business transactions by allowing only one
business transaction at a time to access data.
426
12
Client Session
State
Stores session state on the client.
456
13
Server Session
State
Keeps the session state on a server system in
a serialized form
458
14
Separate
Interface
Defines an interface in a separate package
from its implementation
476
15 Service Stubs
Removes dependence upon problematic
services during testing. (External Integration)
504
16 Record Set An in-memory representation of tabular data. 509
17 Serialized LOB
Saves a Graph of Objects by serializing them
into a Single Large Object (LOB), which it
stores in a database field.
272
PageNumberfromPofEAA
38Design Patterns – Domain Driven Design : Strategic
Pattern Description Page
1
Bounded
Context
They are NOT
Modules
A Bounded Context delimits the applicability of a particular model so
that the team members have a clear and shared understanding of
what has to be consistent and how it relates to other Contexts.
Contexts can be created from (but not limited to) the following:
• how teams are organized
• the structure and layout of the code base
• usage within a specific part of the domain
335
2 Context Map
Context mapping is a design process where the contact points and
translations between bounded contexts are explicitly mapped out.
Focus on mapping the existing landscape, and deal with the actual
transformations later.
1. Shared Kernel
2. Customer / Supplier
3. Conformist
4. Anti Corruption Layer
5. Separate Ways
3
Specification
Pattern
Use the specification pattern when there is a need to model rules,
validation and selection criteria. The specification implementations
test whether an object satisfies all the rules of the specification.
4
Strategy
Pattern
The strategy pattern, also known as the Policy Pattern is used to make
algorithms interchangeable. In this pattern, the varying 'part' is
factored out.
5
Composite
Pattern
This is a direct application of the GoF pattern within the domain being
modeled. The important point to remember is that the client code
should only deal with the abstract type representing the composite
element.
PageNumberfromDomainDrivenDesign–Publishedin2015
39Design Patterns – Domain Driven Design
Pattern Description Page
6 Entity An object defined Primarily by its identity is called an Entity 91
-
Value Object
(Already
referred in P of
EAA)
Many Objects have no conceptual Identity. These objects describe
the characteristic of a thing.
97
7
Aggregate
Aggregate is a cluster of domain objects that can be treated as a
Single Unit. Example Order and Order Item.
125
Aggregate Root
An Aggregate will have one of its component object be the Aggregate
Root.
127
-
Repositories
(Already
referred in P of
EAA)
A Repository represents all objects of a certain type as a conceptual
set. It acts like a collection, except with more elaborate querying
capabilities. Objects of appropriate type are added and removed, and
the machinery behind the Repository inserts them or deletes them
from the database. This definition gathers a cohesive set of
responsibilities for providing access to the roots of Aggregates from
early life cycle through the end.
147
8
Factory /
Builder Pattern
When creation of an Object, or an entire Aggregate, becomes
complicated or reveals too much of the internal structure, Factories
provides encapsulation.
136
PageNumberfromDomainDrivenDesign–Publishedin2015
40Design Patterns – Domain Driven Design
Pattern Description Page
9
Factory / Builder
Pattern
When creation of an Object, or an entire Aggregate, becomes
complicated or reveals too much of the internal structure,
Factories provides encapsulation.
136
10 Domain Service
A Service tends to be named of an Activity rather than an
Entity.
1. The Operation relates to a domain concept that is not a
natural part of an Entity.
2. The interface is defined in terms of other elements of the
Domain Model
3. The operation is stateless
104
11
Anti –
Corruption Layer
(External
Integration)
Creating an isolating layer to provide clients with functionality
in terms of their own Domain Model. The layer talks to the
other system through its existing interface, requiring little or
no modification to the other system. Internally the Layer
translates in both directions as necessary between the two
models.
365
12 Domain Events
A Domain Event is a full-fledged part of the Domain Model, a
representation of of something that happened in the Domain.
Explicit events that the domain experts wants to track and
notified of or which are associated with the state changes in
other Domain Models.
PageNumberfromDomainDrivenDesign–Publishedin2015
41Enterprise Integration Patterns – Messaging System
PageNumberfromEnterpriseIntegrationPatterns
Pattern Description Page
1
Message
Channel
The Message Channel is an internal
implementation detail of the Endpoint
interface and all interactions with the
Message Channel are via the Endpoint
Interfaces.
60
2 Message
To support various message exchange
patterns like one way Event Message
and Request Reply messages Camel
uses an Exchange interface which has
a pattern property which can be set to
In-Only for an Event Message which
has a single inbound Message, or In-
Out for a Request Reply where there is
an inbound and outbound message.
53
3
Message
Endpoint
Supports 4 endpoints
• Web Services: REST & SOAP
• Database : JDBC
• File : Reads File
95
4 Message
Translator
We have 3 built-in Processors
1. SQL Processor (Take DTO and pass
value to query)
2. SOAP Processor (Generate SOAP
Message)
3. REST Processor(Take DTO convert
into respected format
85
42Enterprise Integration Patterns – Messaging Systems
Pattern Description Page
5
Pipes and Filters
Supports the Pipes and Filters from the EIP patterns in various ways.
You can split your processing across multiple independent Endpoint instances
which can then be chained together.
70
6
Message Router
The Message Router from the EIP patterns allows you to consume from an input
destination, evaluate some predicate then choose the right output destination.
78
PageNumberfromEnterpriseIntegrationPatterns
43Enterprise Integration Patterns – Messaging Channels
Pattern Description Page
7
Publish
Subscribe
System
Supports the Publish Subscribe Channel from the EIP patterns using for
example the following components:
• JMS for working with JMS Topics for high performance, clustering and load
balancing
• XMPP when using rooms for group communication
• SEDA for working with SEDA in the same Camel Context which can work in
pub-sub, but allowing multiple consumers.
• VM as SEDA but for intra-JVM.
106
PageNumberfromEnterpriseIntegrationPatterns
44Enterprise Integration Patterns – Messaging Channels
Pattern Description Page
8
Point to
Point
Channel
Supports the Point to Point Channel from the EIP patterns using the following
components
1. SEDA for in-VM seda based messaging
2. JMS for working with JMS Queues for high performance, clustering and load
balancing
3. JPA for using a database as a simple message queue
4. XMPP for point-to-point communication over XMPP (Jabber)
5. and others 103
9
Event
Driven
Consumer
Supports the Event Driven Consumer from the EIP patterns. The default consumer
model is event based (i.e. asynchronous) as this means that the Camel container can
then manage pooling, threading and concurrency for you in a declarative manner.
The Event Driven Consumer is implemented by consumers implementing the
Processor interface which is invoked by the Message Endpoint when a Message is
available for processing.
498
PageNumberfromEnterpriseIntegrationPatterns
45Enterprise Integration Patterns – Message Routing
Pattern Description Page
10
Aggregator
The Aggregator from the EIP patterns allows you to combine a number of
messages together into a single message.
268
11
Content Based
Router
The Content Based Router from the EIP patterns allows you to route messages to
the correct destination based on the contents of the message exchanges.
230
12 Message Filter The Message Filter from the EIP patterns allows you to filter messages.
237
PageNumberfromEnterpriseIntegrationPatterns
46Enterprise Integration Patterns – Message Routing
Pattern Description Page
13 Routing Slip
The Routing Slip from the EIP patterns allows you to route a message
consecutively through a series of processing steps where the sequence of
steps is not known at design time and can vary for each message.
301
14
Load Balancer The Load Balancer Pattern allows you to delegate to one of a number of
endpoints using a variety of different load balancing policies.
15 Multicast
The Multicast allows to route the same message to a number of endpoints
and process them in a different way. The main difference between the
Multicast and Splitter is that Splitter will split the message into several
pieces but the Multicast will not modify the request message.
PageNumberfromEnterpriseIntegrationPatterns
47Enterprise Integration Patterns – Message Transformation
Pattern Description Page
16
Content Enricher
Supports the Content Enricher from the EIP patterns using a Message Translator,
an arbitrary Processor in the routing logic, or using the enrich DSL element to
enrich the message.
336
17 Content Filter Supports the Content Filter from the EIP patterns using one of the following
mechanisms in the routing logic to transform content from the inbound message.
• Message Translator
• invoking a Java bean
• Processor object
342
PageNumberfromEnterpriseIntegrationPatterns
48Enterprise Integration Patterns – Others
Pattern Description Page
18
Request Reply
Supports the Request Reply from the EIP patterns by supporting the Exchange
Pattern on a Message which can be set to In Out to indicate a request/reply.
Camel Components then implement this pattern using the underlying transport
or protocols.
154
19 Wire tap Wire Tap (from the EIP patterns) allows you to route messages to a separate
location while they are being forwarded to the ultimate destination.
547
PageNumberfromEnterpriseIntegrationPatterns
49Design Patterns – Service Design Pattern
Patterns Description Page
1
Request
Mapper
How can a service process data from requests
that are structurally different yet semantically
equivalent?
109
2
Response
Mapper
How can the logic required to construct a
response be re-used by multiple services?
122
3
Data Source
Adapter
How can web service provide access to
internal resources like database tables,
domain objects, or files with a minimum
amount of custom code?
137
4
Asynchronous
Response
Handler
How can a client avoid blocking when sending
a request? 184
5
Service
Connector
How can clients avoid duplicating the code
required to use a specific service and also be
insulated from the intricacies of
communication logic?
168
PageNumberfromserviceDesignPatterns
What is Domain-Driven Design?
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
50
Source: Domain-Driven Design Reference by Eric Evans
Domain-Driven Design is an approach to the
development of complex software in which we:
• Focus on the Core Domain
• Explore models in a creative collaboration of
domain specialists and software practitioners
• Speak a ubiquitous language within an explicitly
bounded context
What is Domain-Driven Design?
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
51
A sphere of knowledge, influence, or activity. The subject area
to which the user applies a program is the domain of the
software. Domain encapsulates a Domain Model.
A system of abstractions that describes selected aspects of a
domain and can be used to solve problems related to that
domain.
The setting in which a word or statement appears that
determines its meaning. Statements about a model can only
be understood in a context.
Domain
Domain
Model
Context
Bounded
Context
A description of a boundary (typically a subsystem, or the
work of a particular team) within which a particular model
is defined and applicable.
Source: Domain-Driven Design Reference by Eric Evans
Understanding Aggregate Root
16December2015
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
52
Order
Customer
Shipping
Address
Aggregate
Root
Line Item
Line Item
Line Item
*
Payment
Strategy
Credit Card
Cash
Bank Transfer
Source: Martin Fowler :
Aggregate Root
• An aggregate will have one of its
component objects be the
aggregate root. Any references
from outside the aggregate
should only go to the aggregate
root. The root can thus ensure the
integrity of the aggregate as a
whole.
• Aggregates are the basic element
of transfer of data storage - you
request to load or save whole
aggregates. Transactions should
not cross aggregate boundaries.
• Aggregates are sometimes
confused with collection classes
(lists, maps, etc.).
• Aggregates are domain concepts
(order, clinic visit, playlist), while
collections are generic. An
aggregate will often contain
multiple collections, together with
simple fields.
125
Domain
Driven
Design
Designing and Fine Tuning Aggregate Root
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
53
Source : Effective Aggregate Design Part 1/2/3 : Vaughn Vernon
http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf
Aggregate Root - #1 Aggregate Root - #2
Super Dense Single Aggregate Root
Results in Transaction concurrency
issues.
Super Dense Aggregate Root is split
into 4 different smaller Aggregate Root
in the 2nd Iteration.
As AppliFire focuses on Design with Auto Code Generation,
working on different design models helps the developers to come
up with best possible design without worrying about the coding
time!
Rules for Building Aggregate Roots
1. Protect True Invariants in Consistency Boundaries. This rule has the
added implication that you should modify just one Aggregate instance in
a single transaction. In other words, when you are designing an
Aggregate composition, plan on that representing a transaction
boundary.
2. Design Small Aggregates. The smallest Aggregate you can design is one
with a single Entity, which will serve as the Aggregate Root.
3. Reference Other Aggregates Only By Identity.
4. Use Eventual Consistency Outside the Consistency Boundary. This
means that ONLY ONE Aggregate instance will be required to be updated
in a single transaction. All other Aggregate instances that must be
updated as a result of any one Aggregate instance update can be
updated within some time frame (using a Domain Event). The business
should determine the allowable time delay.
5. Build Unidirectional Relationship from the Aggregate Root.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
54
Source : Vaughn Vernon : Effective Aggregate Design : https://vaughnvernon.co/?p=838
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
55
Other subsystemAnti-corruption layer
Anti Corruption Layer
365
Domain
Driven
Design
Your subsystem
DTO – Data Transfer Object
Security Considerations
Data obtained from untrusted sources, such as user input from a Web page, should be cleansed and
validated before being placed into a DTO. Doing so enables you to consider the data in the DTO relatively
safe, which simplifies future interactions with the DTO.
16 December
2015
56
The Problem Assembler Pattern
An object that carries data between processes in order to reduce the
number of method calls.
Benefits
1. Reduced Number of Calls
2. Improved Performance
3. Hidden Internals
4. Discovery of Business
objects
Liabilities
1. Class Explosion
2. Additional Computation
3. Additional Coding Effort
https://msdn.microsoft.com/en-us/library/ms978717.aspx
Problem: How do you preserve the simple semantics of a procedure call interface
without being subject to the latency issues inherent in remote communication?
The Solution
401
P of EAA
DTO – Data Transfer Object
57
An object that carries data between processes in order to reduce the
number of method calls.
The most misused pattern in the
Java Enterprise community is the
DTO.
DTO was clearly defined as a
solution for a distribution problem.
DTO was meant to be a coarse-
grained data container which
efficiently transports data between
processes (tiers).
On the other hand considering a
dedicated DTO layer as an
investment, rarely pays off and
often lead to over engineered
bloated architecture.
Real World Java
EE Patterns
Adam Bien
http://realworldpatterns.com
Don't underestimate the cost of [using DTOs].... It's
significant, and it's painful - perhaps second only to the cost
and pain of object-relational mapping.
Another argument I've heard is using them in case you want
to distribute later. This kind of speculative distribution
boundary is what I rail against. Adding remote boundaries
adds complexity.
One case where it is useful to use something like a DTO is
when you have a significant mismatch between the model in
your presentation layer and the underlying domain model.
In this case it makes sense to make presentation specific
facade/gateway that maps from the domain model and
presents an interface that's convenient for the presentation.
Patterns of Enterprise
Application Architecture
Martin Fowler
http://martinfowler.com/books/eaa.html
401
P of EAA
Data Transfer Object vs. Value Object
58
Data Transfer Object Value Object
A DTO is just a data container which is
used to transport data between layers
and tiers.
A Value Object represents itself a fix set
of data and is similar to a Java enum.
It mainly contains of attributes and it’s a
serializable object.
A Value Object doesn't have any identity,
it is entirely identified by its value and is
immutable.
DTOs are anemic in general and do not
contain any business logic.
A real world example would be
Color.RED, Color.BLUE, Currency.USD
Patterns of Enterprise Application Architecture : Martin Fowler
http://martinfowler.com/books/eaa.html
A small simple object, like money or a date range, whose equality isn’t based on
identity.
486
P of EAA
Java EE 7 Retired the DTO
In Java EE the RS spec became the de-facto standard for remoting, so the implementation
of serializable interface is no more required. To transfer data between tiers in Java EE 7
you get the following for FREE!
1. JAXB : Offer JSON / XML serialization for Free.
2. Java API for JSON Processing – Directly serialize part of the Objects into JSON
Anemic Domain Model : Anti Pattern
• There are objects, many named after the
nouns in the domain space, and these objects
are connected with the rich relationships and
structure that true domain models have.
• The catch comes when you look at the
behavior, and you realize that there is hardly
any behavior on these objects, making them
little more than bags of getters and setters.
• The fundamental horror of this anti-pattern is
that it's so contrary to the basic idea of
object-oriented design; which is to combine
data and process together.
• The anemic domain model is really just a
procedural style design, exactly the kind of
thing that object bigots like me (and Eric)
have been fighting since our early days in
Smalltalk.
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
59
Source: Anemic Domain Model By Martin Fowler :
http://martinfowler.com/bliki/AnemicDomainModel.html
• lockUser()
• unlockUser()
• addAddress(String address)
• removeAddress(String address)
Repository Pattern
Objectives
Use the Repository pattern to achieve one or more of the following
objectives:
• You want to maximize the amount of code that can be tested
with automation and to isolate the data layer to support unit
testing.
• You access the data source from many locations and want to
apply centrally managed, consistent access rules and logic.
• You want to implement and centralize a caching strategy for
the data source.
• You want to improve the code's maintainability and
readability by separating business logic from data or service
access logic.
• You want to use business entities that are strongly typed so
that you can identify problems at compile time instead of at
run time.
• You want to associate a behavior with the related data. For
example, you want to calculate fields or enforce complex
relationships or business rules between the data elements
within an entity.
• You want to apply a domain model to simplify complex
business logic.
16 December 2015
60
Repository Pattern Source:
Martin Fowler : http://martinfowler.com/eaaCatalog/repository.html
Microsoft : https://msdn.microsoft.com/en-us/library/ff649690.aspx
Mediates between the domain and data mapping layers using a collection-
like interface for accessing domain objects.
322
P of EAA
Conceptually, a Repository encapsulates the set
of objects persisted in a data store and the
operations performed over them, providing a
more object-oriented view of the persistence
layer. Repository also supports the objective of
achieving a clean separation and one-way
dependency between the domain and data
mapping layers.
Procedural Design Vs. Domain Driven Design
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
61
1. Anemic Entity Structure
2. Massive IF Statements
3. Entire Logic resides in
Service Layer
4. Type Dependent
calculations are done
based on conditional
checks in Service Layer
4
1
2
3
Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
Domain Driven Design with
Java EE 6
By Adam Bien | Javaworld
Polymorphic Business Logic inside a Domain object
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
62
Domain Driven Design with
Java EE 6
By Adam Bien | Javaworld
Computation of the total
cost realized inside a
rich Persistent Domain
Object (PDO) and not
inside a service.
This simplifies creating
very complex business
rules.
Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
Type Specific Computation in a Sub Class
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
63
Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
We can change the
computation of the shipping
cost of a Bulky Item without
touching the remaining
classes.
Its easy to introduce a new
Sub Class without affecting
the computation of the total
cost in the Load Class.
Domain Driven Design with
Java EE 6
By Adam Bien | Javaworld
o
f
Object Construction : Procedural Way Vs. Builder Pattern
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
64
Procedural Way Builder Pattern
Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
Domain Driven Design with Java EE 6
By Adam Bien | Javaworld
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
65
Thread Safety
1. Threat Safety
2. Dependency Injection
3. Service Scope
4. Generics &Type Safety
Thread Safety – Shared Nothing
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
66
Re-Entrancy
Thread-Local
Storage
Execution by a Thread Result
• Partial Execution
• Re-Executed by the Same Thread
• Simultaneously executed by another thread
Correctly completes the
original execution.
Thread Safe
This requires the saving of info in variables
local to each execution.
No Static or Global or other Non-Local States.
Variables on Stack ONLY
Method only Variables
Execution by a Thread Result
• Variables are localized
• Each Thread has its own private copy
• Variables retains values across sub routines
and other code boundaries.
• Allows simultaneously executed by another
thread.
Correctly completes the
original execution.
Thread Safe
Thread Safety – Locks and Synchronization
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
67
Mutual
Exclusion
Atomic
Operations
Execution by a Thread Improper Usage will result in
Access to shared data is serialized
using mechanisms that ensure only
one thread reads or writes to the
shared data at any time.
Deadlocks
Resource Starvation
Execution by a Thread Examples in Java
• Shared data access cannot be interrupted by threads.
• Since the operation is atomic shared data is always kept
in valid state.
• Atomic operations are basis for many thread locking
mechanisms and used to implement MutEx.
• Usually requires machine language instructions
Atomic Boolean
Atomic Integer
Atomic Long
Atomic Reference
…
Immutable
Objects
Supported in
AppliFire
Object State Result
• Object State cannot be changed after construction
• Read-Only data is shared
• Mutations are allowed using Builder Pattern creating a
new Object.
• Entities can be created as Immutable objects.
Thread Safe
Dependency Injection and Service Scope
REST Service, Domain Service (Business Rules), Repository
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
68
Request
Default in AppliFire
Bean Scope Definition Thread Safety
The bean is created every time when a new
request comes in.
Thread Safe
Session
Bean Scope Definition Thread Safety
• The bean is created for the user’s session.
• Asynchronous access from a Web 2.0 app can
corrupt the data (multiple tabs).
• Developers need to ensure that shared state
is NOT corrupt.
Not Thread Safe
Singleton
Bean Scope Definition Thread Safety
• Only ONE instance of the bean is created.
• Any Bean without a STATE can be singleton.
• Asynchronous access from a Web 2.0 app can
corrupt the data (multiple tabs).
• Developers need to ensure that shared state
is NOT corrupt.
Not Thread Safe
Generics and Type Safety
Platform automatically takes care of the
Type Safety for all the layers in the
Architecture
1. App Service Layer (REST)
2. Domain Service (Business Rules)
3. Repository (Data Layer)
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
69
Source: https://docs.oracle.com/javase/tutorial/java/generics/subtyping.html
• Type Inference
• Upper bounded Wildcards
• Lower bounded Wildcards
• Unbounded Wildcards
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
70
1. In-Memory Computing
2. On Performance and Scalability
3. Low Latency and Java
4. Scalability Best Practices – eBay
5. CAP Theorem
Scalability
Caching Technologies
• Hazelcast
• Oracle Coherence
• Infinispan
• Ehcache
• Apache Ignite
• GridGain
• GemFire
Operational In-Memory Computing
Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging] 71
Cache Topology
Standalone This setup consists of a single node
containing all the cached data. It’s
equivalent to a single- node cluster
and does not collaborate with other
running instances.
Distributed Data is spread across multiple nodes in
a cache such that only a single node is
responsible for fetching a particular
entry. This is possible by
distributing/partitioning the cluster
in a balanced manner (i.e., all the
nodes have the same number of
entries and are hence load balanced).
Failover is handled via configurable
backups on each node.
Replicated Data is spread across multiple nodes in
a cache such that each node consists
of the complete cache data, since each
cluster node contains all the data;
failover is not a concern.
Caching Strategies
Read
Through
A process by which a missing cache entry is fetched
from the integrated backend store.
Write
Through
A process by which changes to a cache entry (create,
update, delete) are pushed into the backend data
store.
It is important to note that the business logic for Read-
Through and Write-Through operations for a specific
cache are confined within the caching layer itself.
Hence, your application remains insulated from the
specifics of the cache and its backing system-of-record.
Caching Mode
Embedded When the cache and the application co-exist within the same
JVM, the cache can be said to be operating in embedded mode.
The cache lives and dies with the application JVM. This strategy
should be used when:
• Tight coupling between your application and the cache is not
a concern
• The application host has enough capacity (memory) to
accommodate the demands of the cache
Client /
Server
In this setup, the application acts as the client to a standalone
(remote) caching layer. This should be leveraged when:
• The caching infrastructure and application need to evolve
independently
• Multiple applications use a unified caching layer which can
be scaled up without affecting client applications.
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
72
Operational In-Memory Computing
Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging]
Application
Standalone
Embedded Cache
JVM
Application
Node 1
Embedded Cache
JVM
Application
Node 2
Embedded Cache
JVM
Stand Alone
Embedded Cache
Distributed or Replicated
Cache Cluster
Application
Using Client API
JVM
Standalone
Remote Cache
JVM
Stand Alone
Client Server Cache
Distributed or Replicated
Cache Cluster
Node 1
Remote Cache
JVM
Node 2
Remote Cache
JVM
Application
Using Client API
JVM
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
73
Operational In-Memory Computing
Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging]
On Performance & Scalability
Stateless Architecture & Cloud Computing
16December
2015
(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
74
1. DB Block Size (8K for Transaction Processing and
higher – 16K or 32K for Read intensive Operations)
2. SGA – System Global Area
3. In – Memory Column Store (Oracle 12c) in SGA
1. Tables
2. Materialized Views
3. Partitions (All or Selective)
4. Tablespace (@ this level, all tables and
materialized views will be in Memory)
ALTER SYSTEM SET INMEMORY_SIZE = 100G;
4. Memory Compression for Column Store
5. Query Optimization based on Explain Plan
1. Cardinality (Estimated number of rows
returned in each operations)
2. Access Method (Table Scan or Index Scan)
3. Join Method (Hash, Sort, Merger)
4. Join Order (Order in which tables are joined)
5. Partitioning (Access only required partitions)
6. Parallel Execution
• Examples -> Next
Database – (Oracle)Application Server
1. Thread Pools
2. JDBC Connection Pool Size
3. Compression for Data Transfer
4. Optimizing the CSS & JS files
5. Load Balancing for Web Server and App
Server
Web Application
1. On Demand Loading (Modularized JS
files)
2. Shared Nothing Architecture for Java
3. Stateless Architecture – No Session info
is stored in App Server (Tomcat).
4. Session info is stored in the Database
layer.
5. Optimize the Query based on Database
Explain plans.
6. Aggregate Roots based on DDD
7. Command and Query Responsibility
Segregation for better Read and Write
operations.
SQL Query Performance : Explain Plan MySQL
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
75
Table Rows
Order 326
Order Details 2996
Products 110
Product Lines 7
Customers 122
If You don’t have Primary Indexes, MySQL Explain Plan shows the following……. 
What database does? 7 × 110 × 122 × 326 × 2996 91,750,822,240 Records
Table Rows
Order 1
Order Details 4
Products 1
Product Lines 1
Customers 1
After Adding Primary Key Index
1 x 1 x 4 x 1 x 1 4 Records
Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
Just adding Indexes is not enough!
16December
2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
76
Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
# Select Type Table Possible Keys Reference Rows
1 Primary Derived 219
2 Derived Products 110
3 Derived Product Lines Primary Classicmodels.p.productline 1
4 Union Product Variant 109
5 Union Products Primary Classicmodels.v.productCode 1
6 Union Product Line Primary Classicmodels.p.productline 1
7 Union Result Union 2 and 3
Number of records scanned 219 x 110 x 1 x 109 x 1 x 1 2,625, 810 records
Explain Plan Result
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
77
# Select Type Table Possible Keys Reference Rows
1 Primary Derived2 12
2 Derived Products idx_buyPrice, idx_productLine 23
3 Derived Product Lines Primary Classicmodels.p.productline 1
4 Union Product Variant idx_buyPrice, idx_productCode 1
5 Union Products Primary, idx_productLine Classicmodels.v.productCode 1
6 Union Product Lines Primary Classicmodels.p.productline 1
7 Union Result Union 2, 3
Just adding Indexes is not enough!
Optimize the query
Number of records scanned 12 x 23 276 Records
Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
Explain Plan Result
Filters Data
At Join
Low Latency and Java : 100 Nano Seconds to 100 Milliseconds
1. Immutable Objects
2. Share Nothing Architecture
3. Stateless Architecture
4. Lock Free and Wait Free Patterns
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
78Zing Java Virtual Machine
• Pause less Garbage Collection
• C4 Garbage Collection Algo
• Elastic Java Heap Memory
• Tuned for Low Latency Apps
JVM Collector Name Young Gen Old Gen
Oracle
JVM
ParallelGC Monolithic, stop the
world, copying
Monolithic, stop-the-world, Mark/Sweep/Compact
CMS (Concurrent
/ Mark / Sweep)
Monolithic, stop the
world, copying
Mostly concurrent marker, concurrent, non-compacting
sweeper, fall back to monolithic stop-the-world compaction
G1 (Garbage
First)
Monolithic, stop the
world, copying
Mostly concurrent marker, mostly incremental compaction,
fall back to monolithic stop-the-world
Oracle
Jrockit
Dynamic Garbage
Collector
Monolithic, stop the
world, copying
Mark/Sweep - can choose mostly concurrent or parallel,
incremental compaction, fall back to monolithic stop-the-
world
IBM J9 Balanced Monolithic, stop the
world, copying
Mostly concurrent marker, mostly incremental compaction,
fall back to monolithic stop-the-world
Optthruput Monolithic, stop the
world, copying
Parallel Mark/Sweep, stop-the-world compaction
Zing C4 Concurrent,
Compacting
C4 – Continuously Concurrent Compacting Collector
CAP Theorem
by Eric Allen Brewer
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
79
Pick Any 2!!
Say NO to 2 Phase Commit 
Source: http://en.wikipedia.org/wiki/Eric_Brewer_(scientist)
CAP 12 years later: How the “Rules have changed”
http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed
“In a network subject to communication failures, it is impossible for ant web service to
implement an atomic read / write shared memory that guarantees a response to every
request.”
Java & .NET 2 PC
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
80
Distributed Transactions : 2 Phase Commit
2 PC or not 2 PC, Wherefore Art Thou XA?
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
81
How does 2PC impact scalability?
• Transactions are committed in two
phases.
• This involves communicating with every
database (XA Resources) involved to
determine if the transaction will commit
in the first phase.
• During the second phase each database
is asked to complete the commit.
• While all of this coordination is going on,
locks in all of the data sources are being
held.
• The longer duration locks create the risk
of higher contention.
• Additionally, the two phases require
more database processing time than a
single phase commit.
• The result is lower overall TPS
in the system.
Transaction
Manager
XA Resources
Request to Prepare
Commit
Prepared
Prepare
Phase
Commit
PhaseDone
Source : Pat Helland (Amazon) : Life Beyond Distributed Transactions
Distributed Computing : http://dancres.github.io/Pages/
Solution : Resilient System
• Event Based
• Design for failure
• Asynchronous Recovery
• Make all operations idempotent.
• Each DB operation is a 1 PC
Stored Procedures :
Procedural Languages
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
82
Database Languages
DB2 SQL PL or Java
MS SQL Server T-SQL or .Net
MySQL SQL/PSM
Oracle PL/SQL or Java
PostgreSQL PL/pgSQL
Sybase T-SQL
1. Vendor Specific Code base,
Portability Issues.
2. No Abstraction of Business Logic
from Persistence Layer.
3. Based on 25 years OLD client server
architecture.
4. Scalability Issues in Cloud Computing
era.
5. You are still in the Procedural world!
Pros for Stored Procedure
Performance
Security
In Reality
Why Big Data? No SQL, Mongo DB
Remember Target credit breach in 2014!
Scalability is a big issue
Stored Procedures are BAD! Period
If you are still in the world of stored procedures, you are creating legacy Apps
NOW!!!!
Scalability Best Practices : Lessons from eBay
Best Practices Highlights
#1 Partition By Function
• Decouple the Unrelated Functionalities.
• Selling functionality is served by one set of applications, bidding by
another, search by yet another.
• 16,000 App Servers in 220 different pools
• 1000 logical databases, 400 physical hosts
#2 Split Horizontally
• Break the workload into manageable units.
• eBay’s interactions are stateless by design
• All App Servers are treated equal and none retains any transactional state
• Data Partitioning based on specific requirements
#3
Avoid Distributed
Transactions
• 2 Phase Commit is a pessimistic approach comes with a big COST
• CAP Theorem (Consistency, Availability, Partition Tolerance). Apply any two
at any point in time.
• @ eBay No Distributed Transactions of any kind and NO 2 Phase Commit.
#4
Decouple Functions
Asynchronously
• If Component A calls component B synchronously, then they are tightly
coupled. For such systems to scale A you need to scale B also.
• If Asynchronous A can move forward irrespective of the state of B
• SEDA (Staged Event Driven Architecture)
#5
Move Processing to
Asynchronous Flow
• Move as much processing towards Asynchronous side
• Anything that can wait should wait
#6 Virtualize at All Levels • Virtualize everything. eBay created their on O/R layer for abstraction
#7 Cache Appropriately
• Cache Slow changing, read-mostly data, meta data, configuration and static
data.
16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India
83
Source: http://www.infoq.com/articles/ebay-scalability-best-practices
Infrastructure
Design
Guidelines
Technology Stack
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
85
AppliFire App Developer
AppliFire App Architecture
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
86
Scalability
Stateless Architecture
Security
Built-in Security based on Standards
Resilient
Better Management of App
App Architecture
Behavior Driven Development
Model, View, ViewModel
Domain Driven Design
• App Design is based on Stateless Design
• Stateless REST Services
• No Data is stored in App Server Sessions
• No SQL Injection, CSRF, Session Hijacking
• OWASP / SANS
• Vulnerability Code Analysis
• RBAC and LBAC
• App (UI) State Saving in the Database
• App (Server) State Saving in the Database
• Requirement Analysis
• Auto Create Functional Test Cases
• Event Sourcing and CQRS
• Aggregate Roots, Value Objects
Stateless Architecture
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
87
Security :
Built-in Framework for RBAC / LBAC
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
88
Organization
Security
When
Login
Hour
Where
IP, Geo
How
App, API
Feature
Security
What
Action
RBAC
Data
Security
(CRUD)
Read Write
Full
Access
In-Depth
Security
Data
Validity
Tokeni
zation
Conditional
Masking
LBAC
RBAC & LBAC
JSON Web Tokens : http://jwt.io
JSON Web Tokens (JWT)
Pronounced “jot”, are a standard since the information they
carry is transmitted via JSON. We can read more about the
draft, but that explanation isn’t the most pretty to look at.
JSON Web Tokens work across different programming
languages:
JWTs work in .NET, Python, Node.JS, Java, PHP, Ruby, Go,
JavaScript, and Haskell. So you can see that these can be used
in many different scenarios.
JWTs are self-contained:
They will carry all the information necessary within itself. This
means that a JWT will be able to transmit basic information
about itself, a payload (usually user information), and a
signature.
JWTs can be passed around easily:
Since JWTs are self-contained, they are perfectly used inside an
HTTP header when authenticating an API. You can also pass it
through the URL.
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
89
Header Payload Secret
JSON Web Signature
JWS: RFC 7515
JSON Web Encryption
JWE : RFC 7516
JSON Web Key
JWK : RFC 7517
JSON Web Algorithms
JWA : RFC 7518
JSON Web Token
JWT: RFC 7519
Authentication Traditional Way
16 December 2015
90The Problems with Server Based Authentication. A few major
problems arose with this method of authentication.
Sessions: Every time a user is authenticated, the server will
need to create a record somewhere on our server. This is
usually done in memory and when there are many users
authenticating, the overhead on your server increases.
Scalability: Since sessions are stored in memory, this provides
problems with scalability. As our cloud providers start
replicating servers to handle application load, having vital
information in session memory will limit our ability to scale.
CORS: As we want to expand our application to let our data
be used across multiple mobile devices, we have to worry
about cross-origin resource sharing (CORS). When using AJAX
calls to grab resources from another domain (mobile to our
API server), we could run into problems with forbidden
requests.
CSRF: We will also have protection against cross-site request
forgery (CSRF). Users are susceptible to CSRF attacks since
they can already be authenticated with say a banking site and
this could be taken advantage of when visiting other sites.
With these problems, scalability being the main one, it made
sense to try a different approach.
16 December 2015
91
JSON Web Token: Stateless Architecture
How it Works
Token based authentication is stateless. We are
not storing any information about our user on
the server or in a session.
1. User Requests Access with Username /
Password
2. Application validates credentials
3. Application provides a signed token to the
client
4. Client stores that token and sends it along
with every request
5. Server verifies token and responds with data
Every single request will require the token. This
token should be sent in the HTTP header so that
we keep with the idea of stateless HTTP
requests. We will also need to set our server to
accept requests from all domains using Access-
Control-Allow-Origin: *. What’s interesting about
designating * in the ACAO header is that it does
not allow requests to supply credentials like
HTTP authentication, client-side SSL certificates,
or cookies.
JSON Web Token : Benefits 92
Stateless and Scalable
Tokens stored on client side. Completely stateless, and ready to be scaled. Our load balancers are able
to pass a user along to any of our servers since there is no state or session information anywhere.
Security
The token, not a cookie, is sent on every request and since there is no cookie being sent, this helps to
prevent CSRF attacks. Even if your specific implementation stores the token within a cookie on the
client side, the cookie is merely a storage mechanism instead of an authentication one. There is no
session based information to manipulate since we don’t have a session!
Extensibility (Friend of A Friend and Permissions)
Tokens will allow us to build applications that share permissions with another. For example, we have
linked random social accounts to our major ones like Facebook or Twitter.
Multiple Platforms and Domains
When the application and service expands, we will need to be providing access to all sorts of devices
and applications (since the app will most definitely become popular!).
Having the App API just serve data, we can also make the design choice to serve assets from a CDN.
This eliminates the issues that CORS brings up after we set a quick header configuration for our
application.
Standards Based
JSON Web Token : Anatomy
93
Header Payload Secret
Header
The header carries 2 parts:
1. declaring the type, which is JWT
2. the hashing algorithm to use (HMAC
SHA256 in this case)
Payload
The payload will carry the bulk of our JWT,
also called the JWT Claims. This is where we
will put the information that we want to
transmit and other information about our
token.
Secret
This signature is made up of a hash of the
following components:
1. the header
2. the payload
3. secret
The secret is the signature held by
the server. This is the way that our
server will be able to verify existing
tokens and sign new ones.
This gives us the final part of our
JWT. eyJhbGcioiJI---.eyJpc3Mioi---.03f32998---
JSON Web Token : Anatomy – The Claims
16 December 2015
94
Registered Claims
Claims that are not mandatory whose names are reserved for us. These include:
• iss: The issuer of the token
• sub: The subject of the token
• aud: The audience of the token
• exp: This will probably be the registered claim most often used. This will define the
expiration in Numeric Date value. The expiration MUST be after the current date/time.
• nbf: Defines the time before which the JWT MUST NOT be accepted for processing
• iat: The time the JWT was issued. Can be used to determine the age of the JWT
• jti: Unique identifier for the JWT. Can be used to prevent the JWT from being replayed.
This is helpful for a one time use token.
Public Claims
These are the claims that we create ourselves like user name, information, and other
important information.
Private Claims
A producer and consumer may agree to use claim names that are private. These are
subject to collision, so use them with caution.
JWT Storage : Cookies Vs HTML5 Web Storage
Cookies HTML Web Storage
Access
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
95
Resilient Architecture
Recovery Oriented Architecture
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
96
Morph your ideas into
apps
16 December 2015
(c)2015,AlgorhythmTechPvtLtd.Pune,India
98BLUE PRINTS
Language and Database Agnostic
Visual Modeler
Drag and Drop UI For Design
User Experience
Built-In Search Engine for Enterprise Data
App Health
Better Management of App
DevOps
Create, Ship & Manage
On Cloud / On Premise
• Re-Usable Future Proof Blue Prints
• Auto Create Best Design for the Apps
• Auto Create Good Quality Codebase
• Auto Create Complete Test Suite
• On Demand Real-time Dashboards
• Searches Documents and Databases
• App Context Aware Search Engine
• Data Analytics using Data Visualizer
• Real-time Log Analysis & Troubleshooting
• Metrics and Gauges for Production Team
• System and App Health Metrics
• Proactive App Management
• 100x Speed in Developer Productivity
• Code Feedback using Standard IDE
• Ship to any Cloud Service
• Create Micro Services
• Manage the Apps using Command Center
• Database Agnostic Domain Modeling
• Drag & Drop Business Rule Builder
• Drag & Drop Service Builder
• Drag & Drop UI Builder
AppliFire Differentiators
AppliFire SDLC
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
99
Agile Project Management
Blue Prints
MVVM, DI
AOP, DDD
Design
Patterns
Code Factory
Polyglot
Programming
Java, JS,
HTML5…
BDD, Automated Tests
BDD : Features, Scenarios
SCRUM, XP
Continuous
Integration
Jenkins
Spring IO, Web
Archive, Smart
Devices – Cordova
Facebook – React
Native
Features, Scenarios
To Blue Prints
Deploy
Design /
Architecture
Auto Code
Generation
Build
Management
Unit /
Integration
Testing
Model The
Domain
Manual Code Edit
Using Std IDE
Source Code Repository
AppliFire : User Workspace using Docker Containers
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
100
App Developers Environment x ‘n’ number of DevelopersspIDEr+
Container
Manager
On Demand
Containers
Session based
Containers
2
3
4
5
6
1
1
Design Apps for Web
and Smart Devices
2 Auto Generate Code
3 Compile Code
4 Deploy the App
5 Database Deploy
6 Test the App
File System
Persistence
AppliFire Platform
On-Premise / Cloud
Installation
spIDEr+ RAD Platform
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
101
Multiple Platforms,
Relational Databases
(Oracle, MySQL, MS
SQL) and Big Data
Support (Mongo DB,
Hadoop, Cassandra)
Built-in Security
Pluggable
Authentication
Search Engine
Cloud Drive
Reporting
& Dashboard
Framework,
Data
Browsers
Calendar
Integration
Framework
REST , SOAP, JMS,
MQTT, CoAP
BLE, ZigBee
Cloud Computing
Private,
Public & Hybrid
Computing.
Stateless Design
Multi-Tenancy
Built-In
Analytics &
Rule and
Process Flow &
Workflow
Engines
Power Components
Secure & Polymorphic Integrated Development Environment for Rapid App Development
Unprecedented
100x Speed
For Creating, Deploying &
Managing Next Gen
Enterprise & Consumer Apps
Platform as a Service
The buZZor Platform 102
Visual
Modeller
Designer
Responsive UI
Web
Android
iOS Windows
Black
berry
Event Sourcing & CQRS
Domain Driven Design
Stateless Architecture
Behaviour Driven
Development
Blue Prints
Model View ViewModel
REST + HATEOS
SOA / EDA / ROA
TOGAF / MDA
JSON
UI
Import
Export
UML
Code
Factory
Polyglot
Programming
Java
JS
HTM
L
5
SQL /
JPQL Scala
Ruby
PHP
C#
Swift
DB
Factory
Polyglot
Databases
Oracl
e
MyQ
L
DB2
MS
SQL Orient
DB
Mong
o DB
Cassa
ndra
No
SQL
Neo
4J
Programming
Language &
Database
Agnostic
Design
Available in current version
Supported in the next version
spIDEr+ RAD Differentiators
App Engine with built-in App Store
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
103
App Store can be accessed (with
download facility disabled)
• Using Web Interface (Chrome, Safari,
Firefox, IE)
• Using Customer Specific Android
App Store
• Downloading of the Apps will be
enabled Only after secure
Authentication.
• App availability will be based on Role
based Access Control.
App Store Admins can classify Apps into
various Application Groups
Access rights (for the Apps) can be
applied to
• Apps
• Groups (Applicable to all the Apps in
the Group)
Support Single Sign On for Enterprise
Apps
Enterprise App Store
Zen+ Command Center
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
104
Monitor System Usage
Monitor App Usage
Health Monitoring
Automated App Metrics
Real Time Log Level changes
for Features or modules in
Production Environment
Troubleshoot Issues
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
105
Customer 1
O-Development
Center
Engineering
Team
Customer 2
O-Development
Center
Engineering
Team
Customer 3
O-Development
Center
Engineering
Team
Customer n
O-Development
Center
Engineering
Team
O = Off / On Shore
AppliFire DevOps Platform
Available as aPaaS
in Amazon Cloud
On Premise Deployment
Customer Specific
Development Environment
AppliFire : Deployment for IT Services
AppliFire : The Complete DevOps Platform
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
106
CREATEspIDEr+ RAD Platform (aPaaS)
MANAGECommand & Control Center
SHIPApp Engine / Docker Containers
Morphing Ideas into Apps
16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India
107
Thank You
Abhaya Borwankar Sandeep Pendurkar Ajit Singh Araf Karsh Hamid
abhaya.borwankar@algorhythm.co.in sandeep.pendurkar@algorhythm.co.in ajit.singh@algorhythm.co.in araf.karsh@algorhythm.co.in

Más contenido relacionado

La actualidad más candente

CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton Araf Karsh Hamid
 
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...Chocolatey Software
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersDan Douglas
 
Productionalizing ML : Real Experience
Productionalizing ML : Real ExperienceProductionalizing ML : Real Experience
Productionalizing ML : Real ExperienceIhor Bobak
 
Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)Lucas Jellema
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Araf Karsh Hamid
 
Bhadale group of companies - Our project works
Bhadale group of companies - Our project worksBhadale group of companies - Our project works
Bhadale group of companies - Our project worksVijayananda Mohire
 
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San Francisco
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San FranciscoPatrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San Francisco
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San FranciscoSri Ambati
 
Crafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoCrafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoJAXLondon2014
 
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML Engineers
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML EngineersIntro to Vertex AI, unified MLOps platform for Data Scientists & ML Engineers
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML EngineersDaniel Zivkovic
 
Applying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsApplying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsAlexander van Trijffel
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanAraf Karsh Hamid
 
Automated Testing for CA Plex and 2E
Automated Testing for CA Plex and 2EAutomated Testing for CA Plex and 2E
Automated Testing for CA Plex and 2ECM First Group
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Trayan Iliev
 
Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...People10 Technosoft Private Limited
 
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated Mark O'Brien
 
What's new in java 9?
What's new in java 9?What's new in java 9?
What's new in java 9?Trayan Iliev
 

La actualidad más candente (20)

CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...
Facilitating continuous delivery in a FinTech world with Salt, Jenkins, Nexus...
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
Productionalizing ML : Real Experience
Productionalizing ML : Real ExperienceProductionalizing ML : Real Experience
Productionalizing ML : Real Experience
 
Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Bhadale group of companies - Our project works
Bhadale group of companies - Our project worksBhadale group of companies - Our project works
Bhadale group of companies - Our project works
 
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San Francisco
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San FranciscoPatrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San Francisco
Patrick Hall, H2O.ai - Human Friendly Machine Learning - H2O World San Francisco
 
Crafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoCrafted Design - Sandro Mancuso
Crafted Design - Sandro Mancuso
 
CQRS and Event Sourcing
CQRS and Event SourcingCQRS and Event Sourcing
CQRS and Event Sourcing
 
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML Engineers
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML EngineersIntro to Vertex AI, unified MLOps platform for Data Scientists & ML Engineers
Intro to Vertex AI, unified MLOps platform for Data Scientists & ML Engineers
 
Applying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain ModelsApplying Domain-Driven Design to craft Rich Domain Models
Applying Domain-Driven Design to craft Rich Domain Models
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
 
Automated Testing for CA Plex and 2E
Automated Testing for CA Plex and 2EAutomated Testing for CA Plex and 2E
Automated Testing for CA Plex and 2E
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
 
Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...
 
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
 
What's new in java 9?
What's new in java 9?What's new in java 9?
What's new in java 9?
 
Modern application development with heroku
Modern application development with herokuModern application development with heroku
Modern application development with heroku
 
Cache-Aside Cloud Design Pattern
Cache-Aside Cloud Design PatternCache-Aside Cloud Design Pattern
Cache-Aside Cloud Design Pattern
 

Destacado

Offline first: application data and synchronization
Offline first: application data and synchronizationOffline first: application data and synchronization
Offline first: application data and synchronizationEatDog
 
Developing polyglot persistence applications (SpringOne India 2012)
Developing polyglot persistence applications (SpringOne India 2012)Developing polyglot persistence applications (SpringOne India 2012)
Developing polyglot persistence applications (SpringOne India 2012)Chris Richardson
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureMSDEVMTL
 
CQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureCQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureThomas Jaskula
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRSSteve Pember
 
Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)Chris Richardson
 
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Chris Richardson
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in phpLeonardo Proietti
 
Linguagem Humana E Linguagem Animal
Linguagem Humana E Linguagem AnimalLinguagem Humana E Linguagem Animal
Linguagem Humana E Linguagem Animalmicaze1976
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitecturePaul Mooney
 
Características das sequências discursivas
Características das sequências discursivasCaracterísticas das sequências discursivas
Características das sequências discursivasVânia Hipólito
 
Aggregates, Entities and Value objects - Devnology 2010 community day
Aggregates, Entities and Value objects - Devnology 2010 community dayAggregates, Entities and Value objects - Devnology 2010 community day
Aggregates, Entities and Value objects - Devnology 2010 community dayRick van der Arend
 
Payroll process flowchart
Payroll process flowchartPayroll process flowchart
Payroll process flowchartAngela Torres
 

Destacado (18)

Offline first: application data and synchronization
Offline first: application data and synchronizationOffline first: application data and synchronization
Offline first: application data and synchronization
 
Anti Corruption Layers
Anti Corruption LayersAnti Corruption Layers
Anti Corruption Layers
 
Developing polyglot persistence applications (SpringOne India 2012)
Developing polyglot persistence applications (SpringOne India 2012)Developing polyglot persistence applications (SpringOne India 2012)
Developing polyglot persistence applications (SpringOne India 2012)
 
Timestamp protocols
Timestamp protocolsTimestamp protocols
Timestamp protocols
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the future
 
CQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureCQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architecture
 
Unit 7
Unit 7Unit 7
Unit 7
 
Cyberbullismo: ecco la nostra ricerca.
Cyberbullismo: ecco la nostra ricerca.Cyberbullismo: ecco la nostra ricerca.
Cyberbullismo: ecco la nostra ricerca.
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRS
 
Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)
 
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 
Linguagem Humana E Linguagem Animal
Linguagem Humana E Linguagem AnimalLinguagem Humana E Linguagem Animal
Linguagem Humana E Linguagem Animal
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Características das sequências discursivas
Características das sequências discursivasCaracterísticas das sequências discursivas
Características das sequências discursivas
 
Aggregates, Entities and Value objects - Devnology 2010 community day
Aggregates, Entities and Value objects - Devnology 2010 community dayAggregates, Entities and Value objects - Devnology 2010 community day
Aggregates, Entities and Value objects - Devnology 2010 community day
 
Payroll process flowchart
Payroll process flowchartPayroll process flowchart
Payroll process flowchart
 

Similar a AppliFire Blue Print Design Guidelines

ALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineAbdelkrim Boujraf
 
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CD
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CDMACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CD
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CDIRJET Journal
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...DianaGray10
 
Which Application Modernization Pattern Is Right For You?
Which Application Modernization Pattern Is Right For You?Which Application Modernization Pattern Is Right For You?
Which Application Modernization Pattern Is Right For You?Apigee | Google Cloud
 
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the Key
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the KeyIIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the Key
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the KeyAustraliaChapterIIBA
 
SPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSSPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSNicolas Georgeault
 
SharePoint 2013 Dev Features
SharePoint 2013 Dev FeaturesSharePoint 2013 Dev Features
SharePoint 2013 Dev FeaturesRicardo Wilkins
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicDavid Solivan
 
Oracle data integrator training from hyderabad
Oracle data integrator training from hyderabadOracle data integrator training from hyderabad
Oracle data integrator training from hyderabadFuturePoint Technologies
 
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...constantadevelopers
 
Krishna_Divagar_Kumaresan
Krishna_Divagar_KumaresanKrishna_Divagar_Kumaresan
Krishna_Divagar_KumaresanKrishna Divagar
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by SplunkSplunk
 
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...Lviv Startup Club
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB
 
SA 2014 - Integrating the heterogeneous enterprise
SA 2014 - Integrating the heterogeneous enterpriseSA 2014 - Integrating the heterogeneous enterprise
SA 2014 - Integrating the heterogeneous enterpriseDavid Graham
 
Navjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot Thakur
 

Similar a AppliFire Blue Print Design Guidelines (20)

ALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngine
 
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CD
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CDMACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CD
MACHINE LEARNING AUTOMATIONS PIPELINE WITH CI/CD
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
 
Which Application Modernization Pattern Is Right For You?
Which Application Modernization Pattern Is Right For You?Which Application Modernization Pattern Is Right For You?
Which Application Modernization Pattern Is Right For You?
 
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the Key
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the KeyIIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the Key
IIBA® Sydney Unlocking the Power of Low Code No Code: Why BAs Hold the Key
 
SPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDSSPS Vancouver 2018 - What is CDM and CDS
SPS Vancouver 2018 - What is CDM and CDS
 
Microsoft power platform
Microsoft power platformMicrosoft power platform
Microsoft power platform
 
Oracle data integrator odi training
Oracle data integrator odi trainingOracle data integrator odi training
Oracle data integrator odi training
 
SharePoint 2013 Dev Features
SharePoint 2013 Dev FeaturesSharePoint 2013 Dev Features
SharePoint 2013 Dev Features
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Oracle data integrator training from hyderabad
Oracle data integrator training from hyderabadOracle data integrator training from hyderabad
Oracle data integrator training from hyderabad
 
Brijesh Soni
Brijesh SoniBrijesh Soni
Brijesh Soni
 
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...
Florin Dobre (Plant an App) - Building the future: low-code/no-code tools for...
 
Krishna_Divagar_Kumaresan
Krishna_Divagar_KumaresanKrishna_Divagar_Kumaresan
Krishna_Divagar_Kumaresan
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by Splunk
 
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...
Vitalii Bondarenko and Eugene Berko "Cloud AI Platform as an accelerator of e...
 
Code or No Code
Code or No CodeCode or No Code
Code or No Code
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
SA 2014 - Integrating the heterogeneous enterprise
SA 2014 - Integrating the heterogeneous enterpriseSA 2014 - Integrating the heterogeneous enterprise
SA 2014 - Integrating the heterogeneous enterprise
 
Navjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot_Resume_2017_Latest
Navjot_Resume_2017_Latest
 

Último

Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 

Último (20)

Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 

AppliFire Blue Print Design Guidelines

  • 1. AppliFire Blue Print Design Guidelines App Development Workshop 2015 Fall “It is NOT the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.” - Charles Darwin
  • 2. AppliFire Platform Foundation Principles 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 2 Developer’s Reaction Unification Simplicity What ??!! Architect’s ReactionProject Manager’s Reaction 10( where n >= 0 ) SpeedDeveloper Productivity n+2
  • 3. AppliFire Blue Print Design Guidelines 1. How a Software Project Starts 1. Requirement Specs - BDD 2. AppliFire Blue Print Definition & Structure 3. Event Sourcing & CQRS 4. 2 Phase Commit / Stored Procedures 5. Domain Driven Design 6. UI Design : Model, View, ViewModel + View Controller 7. Traditional Architecture Vs. Onion Architecture 2. AppliFire RAD Design Modules (13-25) 1. Project Creation (Add-ons, Tech Stack, Blue Prints) 2. Requirement Specs 3. Domain Modeling (Entities, Aggregate Roots) 4. Object Query Builder 5. Repository 6. Domain Service and Specifications 7. App Service Studio (Internal & External Services) 8. Visual Studio (Data Visualizer, Visual Designer) 1. App Setup and Build 3. DDD : Architecture & Design 1. Understanding Bounded Context 2. Understanding Aggregate Root 3. Anti Corruption Layer 4. Anemic Domain Model 5. Use Case Comparison : Procedural Vs. Domain Driven Design 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 3 Objectives of the Workshop Map Best Design Practices & Guidelines To AppliFire RAD Design Features To Auto Generate High Quality Error Free Code base with best Architecture and Design. Code base can be exported to standard IDE for further enhancements if required. Design
  • 4. Behavior Driven Development 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 4 Login Example Your Project Features Scenarios Steps Step Definitions Support Code Automation Library Your App BusinessFacing TechnologyFacing GIVEN What the software will look like to the user WHEN The things that the user will do THEN What the user should expect GIVEN I launch the app login page WHEN I fill in login ID with my login id AND I fill in the password with my password AND I press the enter key or Click the sign-in button THEN After authentication, I am on the Home Page ATM Example GIVEN The account is in credit WHEN The customer requests cash AND Ensure cash is dispensed AND Ensure the card is returned THEN Ensure that the account is debited AND the card is valid AND The dispenser contains cash Post beta release
  • 5. Blue Print Structure 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 5 Application Blue Prints1 {JSON} Class of Blue Prints Format How to Create Business Component Blue Prints Business Component Blue Print 2 {JSON} Business Rules, Algorithms, Notifications Domain Blue Prints Domain Blue Prints Domain Blue Prints Domain Blue Prints 3 {JSON} Data Models, Relationships, Rules, Functions Blue Prints are design documents and technology & database agnostic. UML 2.5
  • 6. Blue Print Example 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 6 HCM Blue Prints1 {JSON} Case Study Human Capital Management Format How to Create HR Blue Prints Payroll Blue Prints2 {JSON} Business Rules, Algorithms, Notifications Employee Blue Prints Tax Blue Prints Policy Blue Prints Appraisal Blue Prints 3 {JSON} Data Models, Relationships, Rules, Functions Attendance Blue Prints Holidays Blue Prints Blue Prints are design documents and technology & database agnostic. UML 2.5
  • 7. Model, View, View Model + View Controller 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 7 Resources & API Calls WOW! Weave Once Works anywhere Benefits of Decoupling • Simplified Unit testing • Modular Architecture • Clean Separation of UI, Business Logic and Model Just wire it up! DON’TCODE From Views to Repositories, Journey of a Developer  Separation of Duties
  • 8. Event Sourcing & CQRS Command and Query Responsibility Segregation • In traditional data management systems, both commands (updates to the data) and queries (requests for data) are executed against the same set of entities in a single data repository. • CQRS is a pattern that segregates the operations that read data (Queries) from the operations that update data (Commands) by using separate interfaces. • CQRS should only be used on specific portions of a system in Bounded Context (in DDD). • CQRS should be used along with Event Sourcing. 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 8 MSDN – Microsoft https://msdn.microsoft.com/en-us/library/dn568103.aspx | Martin Fowler : CQRS – http://martinfowler.com/bliki/CQRS.html CQS : Bertrand Meyer Axon Framework For Java Java Axon Framework Resource : http://www.axonframework.org Greg Young
  • 9. Event Sourcing and CQRS Design Example 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 9 Domain The example focus on a concept of a Café which tracks the visit of an individual or group to the café. When people arrive at the café and take a table, a tab is opened. They may then order drinks and food. Drinks are served immediately by the table staff, however food must be cooked by a chef. Once the chef prepared the food it can then be served. Source:http://cqrs.nu/tutorial/cs/01-design Events • TabOpened • DrinksOrdered • FoodOrdered • DrinksCancelled • FoodCancelled • DrinksServed • FoodPrepared • FoodServed • TabClosed Commands • OpenTab • PlaceOrder • AmendOrder • MarkDrinksServed • MarkFoodPrepared • MarkFoodServed • CloseTab Exception • CannotCancelServedItem • TabHasUnservedItem • MustPayEnough Commands are things that indicate requests to our domain. While an event states that something certainly happened, a command may be accepted or rejected. An accepted command leads to zero or more events being emitted to incorporate new facts into the system. A rejected command leads to some kind of exception. An important part of the modeling process is thinking about the things that can cause a command to be refused. Aggregates • A Single Object, which doesn’t reference any others. • An isolated Graph of objects, with One object designated as the Root of the Aggregate. An Event Stream which is an immutable collection of events up until a specific version of an aggregate. The purpose of the version is to implement optimistic locking:
  • 10. Event Sourcing & CQRS : Banking App Example 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 10 Source: http://plainoldobjects.com Applies Eventually Consistent Concept instead of 2 Phase Commit
  • 11. Domain Driven Design 16December2015 11 Source: Domain-Driven Design Reference by Eric Evans
  • 12. Traditional Architecture Vs. Onion Architecture + DDD 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 12 Presentation Business Logic (BLL) Data Access (DAL) Infrastructure Others File system User Interface G Application Services M Domain Services Domain Model Services Database Order ViewController Product JPARepository Implementation Product, ProductRepository Interface OrderProcessing DomainService Interface OrderProcessing DomainService Implementation Source: Onion Architecture By Jeffrey Palermo, Ex Microsoft • Interface Driven • Dependency Injection • Auto wiring • Adaptable to future changes / enhancements UserName Available Order Data Validation Order Discount Validation
  • 13. AppliFire Blue Print Objectives 1. Programming Language and Database Agnostic Blue Prints 2. Split your system into smaller modules / Bounded context 3. Put your Business Logic in Domain Models & Domain Services 4. Create Entities as Behavior Units instead of Anemic Data Structures 1. Integrate Modules with Domain Events 2. Use View Controllers to orchestrate the views – that is fetch data (Model) from Application Services and assign to views and view model. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 13 * Post beta release
  • 14. 16 December 2015 14 App Life cycle Management (ALM) App Specs • Create Specs • Bounded Contexts • Functional Test Cases • Traceability Matrix Domain Model • Entities + Behavior • Value Objects, DTO • Object Query Builder • Design Blue Prints • Legacy Migration Domain Service • Rule Engine • Workflows • Fact based • Event based Start App Service • Web Services • External Services • 150 Connectors • App Connectors Visual Modeler • Data Visualizer • Data Browser • Dashboard Builder • Visual Designer Build • Generate Source • Build Database • Run Test Cases • Build Project Deploy • Development • Quality System • Production System • Docker Container End Project • Create Project • Issue Tracking • Project Management Architecture & Design AppliFire : spIDEr+ App Creation Flow
  • 15. Project Creation • Project Creation starts with the following requirements 1. Project Info like Project Name, Domain Name (Package Prefix for the Java Source Code), Database Name, Database User etc. 2. Select the required Add-ons 3. Select the mandatory App Setup Blue Print from Blue Print Section. App Setup Blue Print contain default design for Authentication and Authorization. 4. Select any other components from already saved Blue Prints. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 15 AppliFire RAD : Project Project Creation 1. Project Info 2. Add-ons (Health, Security, Drive, Search) 3. Technology Stack 4. Blue Print (Use Existing Blue Prints) App Life Cycle Management 1. Issue Tracking System 2. Project Management App 3. Cloud Drive for Document Management 4. Search Engine 5. Calendar 6. Notifications * 1.2 Release Project Explorer 1. Similar to Eclipse Project Explorer 2. Complete View of All the Source Code 3. Tree based view of the Source Code Project Statistics * 1. Project Dashboard 2. Developer Workspace 3. Function Point CalculatorHealth Security Logging Search Engine Cloud Drive Built-In Components & Frameworks
  • 16. Requirement Specs Functional Specs & Bounded Contexts 1. Create Requirement Specifications using Behavior Driven Development Model (BDD). 1. Features / Scenarios 2. Given / When / Then 3. Ubiquitous Language 2. Create High level Bounded Contexts with Context Maps. 3. Create Functional Test Cases. 4. Load Testing 5. Web UI Testing 6. Smart Device App Testing 16December2015 (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 16 RAD : Requirement Specs Requirement Specifications 1. Create Features 2. Create Scenarios 3. Steps (Given / When / Then) 4. Business Perspective & Engineering Perspective Test Cases 1. Unit Test Cases with –ve & +ve Tests 2. Functional Tests Cases for each Scenario * 3. Cucumber based Test Driven Development * 4. UI Testing using Selenium * 5. Load Testing using Apache JMeter * Bounded Contexts 1. Bounded Contexts 2. Context Maps (Shared Kernel, Conformist.. ) 3. Up Stream / Down Stream 4. Dependent / Free 5. Add Domains to Bounded Context * 1.2 Release Traceability Matrix 1. Map Requirements to Bounded Context 2. Map Features and Scenarios to Domains
  • 17. Domain Models Entities / Aggregate Roots Domain Model : Entity Definitions 1. Table Field Properties 2. Entity Type • Master, Transaction, Part of Transaction, Bridge 3. Aggregate Root (Ex. Order having a collection of Order Items) 1. Inverse Maps 2. Aggregate Functions 3. Aggregate Root Specific Business Logic 4. Rules for Field Validations • Not Null, Min, Max, RegEx etc. 5. UI Properties 1. UI Template 2. UI Widget 6. Entity Relationships 7. Entities are Grouped by a Domain and lives within an a Bounded Context 8. Transaction Locking Strategies 9. Caching Strategies 10. Multi-Tenant Strategies 16December2015 (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 17 RAD : Domain Model Studio Entity Details 1. Mapped to Domain 2. Entity Type & Field Properties 3. UI Properties (Validation Rules / Widgets) 4. Composite Key support Entity Relationships 1. 1-1, 1-M, M-M 2. Entity Inheritance 3. Object References (Uni/Bi Directional) Advanced Options 1. Multi Tenancy 2. Transaction Locking 3. Entity Scope (LBAC) 4. Server Side Caching Entity Behavior 1. Aggregate Functions (Min, Max, Ave, Sum, Count etc…) 2. Immutable Entities with Builder Pattern 3. Implement Comparator Interface Database Properties 1. Create Index 2. Audit Log and System Info,
  • 18. 1. Finder Definitions in Entities • Based on Entity Finder properties 1. Advanced Query Criteria • Attached to respective Entities • Repositories are enhanced with advanced query options. 4. Supports CQRS based on Tech Stack 5. Code Feedback 1. Override the implementation Partial or Full Code Change 2. Auto generated Code will retain the custom code (Edited using Standard IDE – Eclipse / Netbeans .. ) 4. Scope of the Repository / Services 1. Request / Singleton 2. Session / Application 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 18 RAD : Domain Model Studio Legacy 2 Digital Transformation 1. Reverse Engineer RDBMS Schema 2. Re-Create Business Rules 3. Use REST Services for new UI Object Query Builder 1. Custom Named Queries : Will be attached to Entities and automatically modifies Repository calls. 2. Detached Queries (Q of CQRS) 3. Create Views * 4. Test Queries 5. Shows Tree View of Aggregate Roots 6. JPQL Function Supported 7. Built-In Query Execution Service as part of the App Framework Domain Models Queries / Repositories Blue Print Manager 1. Save Current Design as Blue Print 2. Consists of the Entire Technology agnostic Design including Reports and Custom UI information. 3. User Defined Blue Prints will be saved and classified. * 1.2 Release
  • 19. Domain Services & Event 1. Business Rule Guide 1. Given To prepare the system with relevant info for processing. Ex. Fetch data using Repositories 2. When Business Rule Conditions and Logic 3. Then After the Rule Processing what the system should do. Ex. 1. Persist in the database 2. Send it back to UI 3. Send it back to 3rd Party App. 2. Add Aggregate Root Specific Business Functions Makes the entities as Behavior Units 3. Facts and Event Based Domain Service Complex Event Processing * 4. Scope of the Domain Service / App (REST) Service Request / Singleton / Session / Application 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 19 RAD : Domain Service Studio 3 Step Process to Build a Rule 1. Given (Based on Facts / Events) 2. When 3. Then Decision Trees * 1. Guided Decision Tree 2. Limited Decision Tree Key Artifacts 1. Immutable Value Objects 2. Specification Patterns 3. Domain Service 4. Anti Corruption Layer 5. Business Aspects Built-In Sample Rules 1. Income Tax Calculation 2. Mortgage Calculation Business Rule Processing 1. On Demand 2. Domain Event Based ** 1.2 Release
  • 20. Domain Services & Event 1. HATEOAS Implementation * Hypermedia As The Engine of App State 2. Rule Engine Code Base 1. Dynamic Rules (Rule Engine – JBoss Drools) 2. Static Code (Java Code) 3. Code Feedback 1. Partial Editing of the Code 2. Complete Editing of the Code 4. Batch Processing 1. Multi Domain Service Batch Processing 2. Scheduler based Batch Processing 3. Scheduler Configuration available in the App 5. External Service Integration 1. External Service Integration into Domain Service 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 20 RAD : Domain Service Studio Batch Process Studio 1. Batch Process Creation 2. Integration with External Data Endpoints 3. Scheduler Integration 4. Domain Service executed as System user. 5. Notification System Complex Event Processing * 1. Event Based 2. Rules for CEP 3. Different Rule Categories Workflow Builder * 1. Case Management 2. Multi Workflow Support 3. Auto Aggregate Root UI integration 4. Integration with Doc Management * 1.2 Release
  • 21. App Service Studio 1. REST Services 1. Remote Façade * 2. Auto Creation of REST Services 3. Security and Log Management 4. Health Monitoring 2. Data Endpoint Orchestration 1. Built-In Integration Workflows 2. Built-In Connectors 3. Drag and Drop Wizard 4. More than 100 pre-built integration points 5. Support of 40+ Enterprise Integration Patterns 16December 2015 (c)2015,AlgorhythmTechPvtLtd.Pune,India 21 RAD : App Service Studio App REST Services 1. API Monitor & Management 2. API Throttling 3. API Licensing DEO – App Connectors 1. SAP NetWeaver Connector 2. Salesforce Connector DEO – Protocol based Connectors 1. SOAP Services 2. REST Services 3. JMS (Java Messaging Service) 4. JDBC (Java DB Connector) 5. File Connector DEO – Social / Cloud Connectors 1. Facebook Connector 2. Twitter Connector 3. LinkedIn Connector 4. Yammer Connector 5. Box Connector 6. Drop Box Connector 7. Amazon Cloud Services Connector 8. Google Drive / Mail / Calendar Connector 9. Open Weather Map Connector * 1.2 Release
  • 22. Visual Designer Studio 1. Data Visualizer 1. Use Object Query Builder to create Detached Queries 2. 150 Charts to choose 3. Multiple UI Formats 4. Calendar UI for App Data 2. Visual Designer 1. Edit Auto Created UI from Built-In Templates 2. Create Custom UI using Drag and Drop WYSIWYG Form Builder 3. UI Widgets for Custom UI Creation 4. UI Context based Source Code View 16December2015 (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 22 RAD : Visual Designer Studio Data Visualizer 1. Object Query Builder for Queries 2. Grid Configuration 3. Chart Properties (150 Charts) 4. Data Point & Chart Point Widgets 5. Drill Down Configuration 6. Search Engine Configuration Dashboard Builder using Forms 1. Drag and Drop Report Components 2. Configure Refresh time Visual Designer 1. Auto UI Creation Using Built-In Templates 2. Custom UI Creation with Layouts 3. UI Behaviors (UI Rules) 4. Create UI Forms from One or More REST Service 5. Based on MVVM+VC Design Pattern 6. WYSIWYG UI for Form Creation 7. Automated Field Validation Rules Model 8. Automated Form Actions from Model Data Browser (Actionable Data) 1. Search and Browse Data 2. Launch Other Forms from Data Browser 3. Supports all Data Visualizer Features 4. Calendar UI with Aggregates 5. Launch Data Browser from Calendar Widgets
  • 23. App Setup • Once the Design is done the App Developer needs to do the following before the the Build Process 1. Authentication Setup 2. Create App Menus (Drag and Drop) 3. Check Security Setup 4. Check Logger Setup 5. Check Health Setup 6. Scheduler Setup for Batch Processes 7. Google Re-Captcha Support for Apps 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 23 Resources : App Setup Authentication Setup 1. Database or Active Directory 2. Password Policies 3. Session Timeouts Menu Setup 1. Re-Arrange Auto Generated Menus 2. Create new Menu Groups 3. Select Menu Template 4. App State Save for Menus Logger Setup 1. Log Alarm Setup 2. Logger Setup Scheduler Setup 1. What: Select Job to be schedule 2. Whom: By Whom (System or User) 3. When: to Schedule the Job Health Setup 1. Status and API Calls 2. Counters, Gauges, Health Metrics
  • 24. Build & Deploy • Once the Design is done the App Developer needs to do the following to build the App. 1. Generate the Source Code 2. Create App Menus (Drag and Drop) 3. Check if Security, Logger and Health Setup needs changes. 4. Build the Database 5. Run Test Cases 6. Build the Project 7. Deploy and Launch the App • App Build Status will be displayed in the Console. • Support for Docker Containers & Micro Services Architecture • Click ‘Launch the App’ to login into the App. 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 24 Build & Deploy Build 1. Generate the Code base 2. Build the Database 3. Run Test Cases 4. Build Android App 5. Launch the App 6. Build App + Database + Launch App 7. Commit Source Code to Central Repository (GIT / SVN) Deploy 1. Deploy to Development System 2. Deploy to QA System 3. Deploy to Production System 4. Docker Container / Micro Services 5. Download the Web App 6. Download the Android App Console 1. Shows Real-time Project Build Status 2. Shows Source Code LOC 3. Shows App Creation from Domain and different App Layer perspective. 4. Unit Test Case Results and Details 5. Functional Test Case Results * * 1.2 Release
  • 25. 25 Domain Model • Entities + Behavior • Value Objects, DTO • Object Query Builder • Design Blue Prints • Legacy Migration 1. Connect to RDBMS 2. Reverse Engineer Schema (Foreign Keys, Indexes) 3. Create Bounded Contexts 1 Domain Model • Entities + Behavior • Value Objects, DTO • Object Query Builder • Design Blue Prints • Legacy Migration 1. Create Aggregate Roots 2. Create Value Objects 3. Add Behaviors to Entities 4. Create Custom Queries 2 1. Create Rules based on Facts and Events 2. Create Workflows 3. Create Batch Domain Service • Rule Engine • Workflows • Fact / Event based • Batch Process Builder 3 App Service • Web Services • External Services • 150 Connectors • App Connectors 1. Create External Services (Optional) 4 Visual Modeler • Data Visualizer • Data Browser • Dashboard Builder • Visual Designer 5 1. Create UI for Web and Smart Devices 2. Create Data Visualization for Reports and Dashboards 3. Enable Search Engine CapabilitiesBuild • Generate Source • Build Database • Run Test Cases • Build Project 6 1. Create the Build / App 2. Go To Step 1 to save the Design Blue Prints. Now you have Future Proof Design Blue Prints. This gives you the power to change Design and use any technology stack in the future. LegacyMigration
  • 26. App Design Guidelines BETTER DESIGN BETTER CODE BASE Specs Design Patterns Thread Safety Scalability
  • 27. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 27 1. Requirement Analysis using DDD 2. Understanding Bounded Context 3. Context Map 4. Understanding Context Map 5. Context Map Terms Requirements
  • 28. Understanding Requirement Analysis using DDD 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 28 Ubiquitous Language Vocabulary shared by all involved parties Used in all forms of spoken / written communication Ubiquitous Language with BDD As an insurance Broker I want to know who my Gold Customers are So that I sell more Given Customer John Doe exists When he buys insurance ABC for $1000 USD Then He becomes a Gold Customer
  • 29. Understanding Requirement Analysis using DDD 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 29 Bounded Context Areas of the domain treated independently Discovered as you assess requirements and build language
  • 30. Understanding Bounded Context 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 30 Source: BoundedContext By Martin Fowler : http://martinfowler.com/bliki/BoundedContext.html • DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. • Bounded Contexts have both unrelated concepts • Such as a support ticket only existing in a customer support context • But also share concepts such as products and customers. • Different contexts may have completely different models of common concepts with mechanisms to map between these polysemic concepts for integration.
  • 32. Understanding Context Map 1. A context map provides Global View of the system that UML or architecture diagrams completely miss, helping us to focus on choices that are really viable in your scenario without wasting money. 2. Each Bounded Context fits within the Context Map to show how they should communicate amongst each other and how data should be shared. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 32 Up Stream (u) – Down Stream (d) The upstream team may succeed independently of the fate of the downstream team. Mutually Dependent Success depends on the success of both the teams. Free In which success or failure of the development work in other contexts has little affect on delivery.
  • 33. Context Map Terms Term Definition Action Partnership When teams in two context will succeed or fail together, a cooperative relationship often emerges. Forge Partnerships Shared Kernel Sharing a part of the Mode and associated code is very intimate interdependency, which can leverage design work or undermine it. Keep the Kernel Small. Customer / Supplier When two teams are in upstream – downstream relationship, where the upstream team may succeed independently of the fate of the downstream team, the needs of the downstream come to be addressed in a variety of ways with wide range of consequences. Downstream priorities factor into upstream planning. Conformist Upstream has no motivation in this partnership to keep the promise. Altruism may motivate Upstream developers to give promises they cant keep. Share just enough info with upstream to keep their motivation. Anti Corruption Layer When the translation between two bounded context becomes more complex, then the translation layer takes on a more defensive tone. (d) creates a layer in sync own model and matching (u) functionality. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 33
  • 34. Context Map Terms Term Definition Action Open Host Service When a subsystem has to be integrated with many others, customizing a translator for each can bog down the team. There is more and more to maintain, and more and more to worry about when changes are made. Use a one of translator to augment the Protocol to share info (REST) Published Language Translation between the models of two bounded contexts requires a common language. Published Language is often combined with Open Host Service. Use a well documented shared language (JSON) Separate Ways If two sets of functionality have no significant relationship, they can be completely cut loose from each other. Integration is always expensive and sometimes the benefit is small. Bounded context with no connection to others. Big Ball of Mud As we survey existing systems, we find that, in fact, there are parts of systems, often large ones, where models are mixed and boundaries are inconsistent. Designate the mess as a Big Ball of Mud. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 34
  • 35. 35 Are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time. Design Patterns 50+ Patterns
  • 36. 36Patterns of Enterprise Application Architecture Pattern Description Page 1 Domain Model An Object Model of the domain that incorporates both behavior and data 116 2 Service Layer Defines an application’s boundary with a layer of services that establishes a set of available operations and coordinates the applications response in each operation 133 3 Repository Mediates between the Domain and data mapping layers using a collection like interface for accessing Domain Objects. 322 4 Data Transfer Object An Object that carries data between processes in order to reduce the number of method calls. 401 5 Value Object A Small Object, like Money, or a date range, whose equality isn’t based on identity. 486 6 Single Table Inheritance Represents an inheritance hierarchy of classes as a Single table that has columns for all the fields of the various classes. 278 7 Class Table Inheritance Represents an inheritance hierarchy of classes with one table for each class. 285 8 Concrete Table Inheritance Represents an inheritance hierarchy of classes with one table per concrete class in the hierarchy 293 9 Remote Facade Provides a coarse-grained façade on fine grained objects to improve efficiency over a network. 388 10 Optimistic Offline Lock Prevents conflicts between concurrent business transactions by detecting a conflict and rolling back transactions. 416 PageNumberfromPofEAA
  • 37. 37Patterns of Enterprise Application Architecture Pattern Description Page 11 Pessimistic Offline Lock Prevents conflicts between concurrent business transactions by allowing only one business transaction at a time to access data. 426 12 Client Session State Stores session state on the client. 456 13 Server Session State Keeps the session state on a server system in a serialized form 458 14 Separate Interface Defines an interface in a separate package from its implementation 476 15 Service Stubs Removes dependence upon problematic services during testing. (External Integration) 504 16 Record Set An in-memory representation of tabular data. 509 17 Serialized LOB Saves a Graph of Objects by serializing them into a Single Large Object (LOB), which it stores in a database field. 272 PageNumberfromPofEAA
  • 38. 38Design Patterns – Domain Driven Design : Strategic Pattern Description Page 1 Bounded Context They are NOT Modules A Bounded Context delimits the applicability of a particular model so that the team members have a clear and shared understanding of what has to be consistent and how it relates to other Contexts. Contexts can be created from (but not limited to) the following: • how teams are organized • the structure and layout of the code base • usage within a specific part of the domain 335 2 Context Map Context mapping is a design process where the contact points and translations between bounded contexts are explicitly mapped out. Focus on mapping the existing landscape, and deal with the actual transformations later. 1. Shared Kernel 2. Customer / Supplier 3. Conformist 4. Anti Corruption Layer 5. Separate Ways 3 Specification Pattern Use the specification pattern when there is a need to model rules, validation and selection criteria. The specification implementations test whether an object satisfies all the rules of the specification. 4 Strategy Pattern The strategy pattern, also known as the Policy Pattern is used to make algorithms interchangeable. In this pattern, the varying 'part' is factored out. 5 Composite Pattern This is a direct application of the GoF pattern within the domain being modeled. The important point to remember is that the client code should only deal with the abstract type representing the composite element. PageNumberfromDomainDrivenDesign–Publishedin2015
  • 39. 39Design Patterns – Domain Driven Design Pattern Description Page 6 Entity An object defined Primarily by its identity is called an Entity 91 - Value Object (Already referred in P of EAA) Many Objects have no conceptual Identity. These objects describe the characteristic of a thing. 97 7 Aggregate Aggregate is a cluster of domain objects that can be treated as a Single Unit. Example Order and Order Item. 125 Aggregate Root An Aggregate will have one of its component object be the Aggregate Root. 127 - Repositories (Already referred in P of EAA) A Repository represents all objects of a certain type as a conceptual set. It acts like a collection, except with more elaborate querying capabilities. Objects of appropriate type are added and removed, and the machinery behind the Repository inserts them or deletes them from the database. This definition gathers a cohesive set of responsibilities for providing access to the roots of Aggregates from early life cycle through the end. 147 8 Factory / Builder Pattern When creation of an Object, or an entire Aggregate, becomes complicated or reveals too much of the internal structure, Factories provides encapsulation. 136 PageNumberfromDomainDrivenDesign–Publishedin2015
  • 40. 40Design Patterns – Domain Driven Design Pattern Description Page 9 Factory / Builder Pattern When creation of an Object, or an entire Aggregate, becomes complicated or reveals too much of the internal structure, Factories provides encapsulation. 136 10 Domain Service A Service tends to be named of an Activity rather than an Entity. 1. The Operation relates to a domain concept that is not a natural part of an Entity. 2. The interface is defined in terms of other elements of the Domain Model 3. The operation is stateless 104 11 Anti – Corruption Layer (External Integration) Creating an isolating layer to provide clients with functionality in terms of their own Domain Model. The layer talks to the other system through its existing interface, requiring little or no modification to the other system. Internally the Layer translates in both directions as necessary between the two models. 365 12 Domain Events A Domain Event is a full-fledged part of the Domain Model, a representation of of something that happened in the Domain. Explicit events that the domain experts wants to track and notified of or which are associated with the state changes in other Domain Models. PageNumberfromDomainDrivenDesign–Publishedin2015
  • 41. 41Enterprise Integration Patterns – Messaging System PageNumberfromEnterpriseIntegrationPatterns Pattern Description Page 1 Message Channel The Message Channel is an internal implementation detail of the Endpoint interface and all interactions with the Message Channel are via the Endpoint Interfaces. 60 2 Message To support various message exchange patterns like one way Event Message and Request Reply messages Camel uses an Exchange interface which has a pattern property which can be set to In-Only for an Event Message which has a single inbound Message, or In- Out for a Request Reply where there is an inbound and outbound message. 53 3 Message Endpoint Supports 4 endpoints • Web Services: REST & SOAP • Database : JDBC • File : Reads File 95 4 Message Translator We have 3 built-in Processors 1. SQL Processor (Take DTO and pass value to query) 2. SOAP Processor (Generate SOAP Message) 3. REST Processor(Take DTO convert into respected format 85
  • 42. 42Enterprise Integration Patterns – Messaging Systems Pattern Description Page 5 Pipes and Filters Supports the Pipes and Filters from the EIP patterns in various ways. You can split your processing across multiple independent Endpoint instances which can then be chained together. 70 6 Message Router The Message Router from the EIP patterns allows you to consume from an input destination, evaluate some predicate then choose the right output destination. 78 PageNumberfromEnterpriseIntegrationPatterns
  • 43. 43Enterprise Integration Patterns – Messaging Channels Pattern Description Page 7 Publish Subscribe System Supports the Publish Subscribe Channel from the EIP patterns using for example the following components: • JMS for working with JMS Topics for high performance, clustering and load balancing • XMPP when using rooms for group communication • SEDA for working with SEDA in the same Camel Context which can work in pub-sub, but allowing multiple consumers. • VM as SEDA but for intra-JVM. 106 PageNumberfromEnterpriseIntegrationPatterns
  • 44. 44Enterprise Integration Patterns – Messaging Channels Pattern Description Page 8 Point to Point Channel Supports the Point to Point Channel from the EIP patterns using the following components 1. SEDA for in-VM seda based messaging 2. JMS for working with JMS Queues for high performance, clustering and load balancing 3. JPA for using a database as a simple message queue 4. XMPP for point-to-point communication over XMPP (Jabber) 5. and others 103 9 Event Driven Consumer Supports the Event Driven Consumer from the EIP patterns. The default consumer model is event based (i.e. asynchronous) as this means that the Camel container can then manage pooling, threading and concurrency for you in a declarative manner. The Event Driven Consumer is implemented by consumers implementing the Processor interface which is invoked by the Message Endpoint when a Message is available for processing. 498 PageNumberfromEnterpriseIntegrationPatterns
  • 45. 45Enterprise Integration Patterns – Message Routing Pattern Description Page 10 Aggregator The Aggregator from the EIP patterns allows you to combine a number of messages together into a single message. 268 11 Content Based Router The Content Based Router from the EIP patterns allows you to route messages to the correct destination based on the contents of the message exchanges. 230 12 Message Filter The Message Filter from the EIP patterns allows you to filter messages. 237 PageNumberfromEnterpriseIntegrationPatterns
  • 46. 46Enterprise Integration Patterns – Message Routing Pattern Description Page 13 Routing Slip The Routing Slip from the EIP patterns allows you to route a message consecutively through a series of processing steps where the sequence of steps is not known at design time and can vary for each message. 301 14 Load Balancer The Load Balancer Pattern allows you to delegate to one of a number of endpoints using a variety of different load balancing policies. 15 Multicast The Multicast allows to route the same message to a number of endpoints and process them in a different way. The main difference between the Multicast and Splitter is that Splitter will split the message into several pieces but the Multicast will not modify the request message. PageNumberfromEnterpriseIntegrationPatterns
  • 47. 47Enterprise Integration Patterns – Message Transformation Pattern Description Page 16 Content Enricher Supports the Content Enricher from the EIP patterns using a Message Translator, an arbitrary Processor in the routing logic, or using the enrich DSL element to enrich the message. 336 17 Content Filter Supports the Content Filter from the EIP patterns using one of the following mechanisms in the routing logic to transform content from the inbound message. • Message Translator • invoking a Java bean • Processor object 342 PageNumberfromEnterpriseIntegrationPatterns
  • 48. 48Enterprise Integration Patterns – Others Pattern Description Page 18 Request Reply Supports the Request Reply from the EIP patterns by supporting the Exchange Pattern on a Message which can be set to In Out to indicate a request/reply. Camel Components then implement this pattern using the underlying transport or protocols. 154 19 Wire tap Wire Tap (from the EIP patterns) allows you to route messages to a separate location while they are being forwarded to the ultimate destination. 547 PageNumberfromEnterpriseIntegrationPatterns
  • 49. 49Design Patterns – Service Design Pattern Patterns Description Page 1 Request Mapper How can a service process data from requests that are structurally different yet semantically equivalent? 109 2 Response Mapper How can the logic required to construct a response be re-used by multiple services? 122 3 Data Source Adapter How can web service provide access to internal resources like database tables, domain objects, or files with a minimum amount of custom code? 137 4 Asynchronous Response Handler How can a client avoid blocking when sending a request? 184 5 Service Connector How can clients avoid duplicating the code required to use a specific service and also be insulated from the intricacies of communication logic? 168 PageNumberfromserviceDesignPatterns
  • 50. What is Domain-Driven Design? 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 50 Source: Domain-Driven Design Reference by Eric Evans Domain-Driven Design is an approach to the development of complex software in which we: • Focus on the Core Domain • Explore models in a creative collaboration of domain specialists and software practitioners • Speak a ubiquitous language within an explicitly bounded context
  • 51. What is Domain-Driven Design? 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 51 A sphere of knowledge, influence, or activity. The subject area to which the user applies a program is the domain of the software. Domain encapsulates a Domain Model. A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain. The setting in which a word or statement appears that determines its meaning. Statements about a model can only be understood in a context. Domain Domain Model Context Bounded Context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. Source: Domain-Driven Design Reference by Eric Evans
  • 52. Understanding Aggregate Root 16December2015 (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 52 Order Customer Shipping Address Aggregate Root Line Item Line Item Line Item * Payment Strategy Credit Card Cash Bank Transfer Source: Martin Fowler : Aggregate Root • An aggregate will have one of its component objects be the aggregate root. Any references from outside the aggregate should only go to the aggregate root. The root can thus ensure the integrity of the aggregate as a whole. • Aggregates are the basic element of transfer of data storage - you request to load or save whole aggregates. Transactions should not cross aggregate boundaries. • Aggregates are sometimes confused with collection classes (lists, maps, etc.). • Aggregates are domain concepts (order, clinic visit, playlist), while collections are generic. An aggregate will often contain multiple collections, together with simple fields. 125 Domain Driven Design
  • 53. Designing and Fine Tuning Aggregate Root 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 53 Source : Effective Aggregate Design Part 1/2/3 : Vaughn Vernon http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf Aggregate Root - #1 Aggregate Root - #2 Super Dense Single Aggregate Root Results in Transaction concurrency issues. Super Dense Aggregate Root is split into 4 different smaller Aggregate Root in the 2nd Iteration. As AppliFire focuses on Design with Auto Code Generation, working on different design models helps the developers to come up with best possible design without worrying about the coding time!
  • 54. Rules for Building Aggregate Roots 1. Protect True Invariants in Consistency Boundaries. This rule has the added implication that you should modify just one Aggregate instance in a single transaction. In other words, when you are designing an Aggregate composition, plan on that representing a transaction boundary. 2. Design Small Aggregates. The smallest Aggregate you can design is one with a single Entity, which will serve as the Aggregate Root. 3. Reference Other Aggregates Only By Identity. 4. Use Eventual Consistency Outside the Consistency Boundary. This means that ONLY ONE Aggregate instance will be required to be updated in a single transaction. All other Aggregate instances that must be updated as a result of any one Aggregate instance update can be updated within some time frame (using a Domain Event). The business should determine the allowable time delay. 5. Build Unidirectional Relationship from the Aggregate Root. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 54 Source : Vaughn Vernon : Effective Aggregate Design : https://vaughnvernon.co/?p=838
  • 55. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 55 Other subsystemAnti-corruption layer Anti Corruption Layer 365 Domain Driven Design Your subsystem
  • 56. DTO – Data Transfer Object Security Considerations Data obtained from untrusted sources, such as user input from a Web page, should be cleansed and validated before being placed into a DTO. Doing so enables you to consider the data in the DTO relatively safe, which simplifies future interactions with the DTO. 16 December 2015 56 The Problem Assembler Pattern An object that carries data between processes in order to reduce the number of method calls. Benefits 1. Reduced Number of Calls 2. Improved Performance 3. Hidden Internals 4. Discovery of Business objects Liabilities 1. Class Explosion 2. Additional Computation 3. Additional Coding Effort https://msdn.microsoft.com/en-us/library/ms978717.aspx Problem: How do you preserve the simple semantics of a procedure call interface without being subject to the latency issues inherent in remote communication? The Solution 401 P of EAA
  • 57. DTO – Data Transfer Object 57 An object that carries data between processes in order to reduce the number of method calls. The most misused pattern in the Java Enterprise community is the DTO. DTO was clearly defined as a solution for a distribution problem. DTO was meant to be a coarse- grained data container which efficiently transports data between processes (tiers). On the other hand considering a dedicated DTO layer as an investment, rarely pays off and often lead to over engineered bloated architecture. Real World Java EE Patterns Adam Bien http://realworldpatterns.com Don't underestimate the cost of [using DTOs].... It's significant, and it's painful - perhaps second only to the cost and pain of object-relational mapping. Another argument I've heard is using them in case you want to distribute later. This kind of speculative distribution boundary is what I rail against. Adding remote boundaries adds complexity. One case where it is useful to use something like a DTO is when you have a significant mismatch between the model in your presentation layer and the underlying domain model. In this case it makes sense to make presentation specific facade/gateway that maps from the domain model and presents an interface that's convenient for the presentation. Patterns of Enterprise Application Architecture Martin Fowler http://martinfowler.com/books/eaa.html 401 P of EAA
  • 58. Data Transfer Object vs. Value Object 58 Data Transfer Object Value Object A DTO is just a data container which is used to transport data between layers and tiers. A Value Object represents itself a fix set of data and is similar to a Java enum. It mainly contains of attributes and it’s a serializable object. A Value Object doesn't have any identity, it is entirely identified by its value and is immutable. DTOs are anemic in general and do not contain any business logic. A real world example would be Color.RED, Color.BLUE, Currency.USD Patterns of Enterprise Application Architecture : Martin Fowler http://martinfowler.com/books/eaa.html A small simple object, like money or a date range, whose equality isn’t based on identity. 486 P of EAA Java EE 7 Retired the DTO In Java EE the RS spec became the de-facto standard for remoting, so the implementation of serializable interface is no more required. To transfer data between tiers in Java EE 7 you get the following for FREE! 1. JAXB : Offer JSON / XML serialization for Free. 2. Java API for JSON Processing – Directly serialize part of the Objects into JSON
  • 59. Anemic Domain Model : Anti Pattern • There are objects, many named after the nouns in the domain space, and these objects are connected with the rich relationships and structure that true domain models have. • The catch comes when you look at the behavior, and you realize that there is hardly any behavior on these objects, making them little more than bags of getters and setters. • The fundamental horror of this anti-pattern is that it's so contrary to the basic idea of object-oriented design; which is to combine data and process together. • The anemic domain model is really just a procedural style design, exactly the kind of thing that object bigots like me (and Eric) have been fighting since our early days in Smalltalk. (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 59 Source: Anemic Domain Model By Martin Fowler : http://martinfowler.com/bliki/AnemicDomainModel.html • lockUser() • unlockUser() • addAddress(String address) • removeAddress(String address)
  • 60. Repository Pattern Objectives Use the Repository pattern to achieve one or more of the following objectives: • You want to maximize the amount of code that can be tested with automation and to isolate the data layer to support unit testing. • You access the data source from many locations and want to apply centrally managed, consistent access rules and logic. • You want to implement and centralize a caching strategy for the data source. • You want to improve the code's maintainability and readability by separating business logic from data or service access logic. • You want to use business entities that are strongly typed so that you can identify problems at compile time instead of at run time. • You want to associate a behavior with the related data. For example, you want to calculate fields or enforce complex relationships or business rules between the data elements within an entity. • You want to apply a domain model to simplify complex business logic. 16 December 2015 60 Repository Pattern Source: Martin Fowler : http://martinfowler.com/eaaCatalog/repository.html Microsoft : https://msdn.microsoft.com/en-us/library/ff649690.aspx Mediates between the domain and data mapping layers using a collection- like interface for accessing domain objects. 322 P of EAA Conceptually, a Repository encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer. Repository also supports the objective of achieving a clean separation and one-way dependency between the domain and data mapping layers.
  • 61. Procedural Design Vs. Domain Driven Design 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 61 1. Anemic Entity Structure 2. Massive IF Statements 3. Entire Logic resides in Service Layer 4. Type Dependent calculations are done based on conditional checks in Service Layer 4 1 2 3 Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html Domain Driven Design with Java EE 6 By Adam Bien | Javaworld
  • 62. Polymorphic Business Logic inside a Domain object 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 62 Domain Driven Design with Java EE 6 By Adam Bien | Javaworld Computation of the total cost realized inside a rich Persistent Domain Object (PDO) and not inside a service. This simplifies creating very complex business rules. Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
  • 63. Type Specific Computation in a Sub Class 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 63 Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html We can change the computation of the shipping cost of a Bulky Item without touching the remaining classes. Its easy to introduce a new Sub Class without affecting the computation of the total cost in the Load Class. Domain Driven Design with Java EE 6 By Adam Bien | Javaworld o f
  • 64. Object Construction : Procedural Way Vs. Builder Pattern 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 64 Procedural Way Builder Pattern Source: http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html Domain Driven Design with Java EE 6 By Adam Bien | Javaworld
  • 65. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 65 Thread Safety 1. Threat Safety 2. Dependency Injection 3. Service Scope 4. Generics &Type Safety
  • 66. Thread Safety – Shared Nothing 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 66 Re-Entrancy Thread-Local Storage Execution by a Thread Result • Partial Execution • Re-Executed by the Same Thread • Simultaneously executed by another thread Correctly completes the original execution. Thread Safe This requires the saving of info in variables local to each execution. No Static or Global or other Non-Local States. Variables on Stack ONLY Method only Variables Execution by a Thread Result • Variables are localized • Each Thread has its own private copy • Variables retains values across sub routines and other code boundaries. • Allows simultaneously executed by another thread. Correctly completes the original execution. Thread Safe
  • 67. Thread Safety – Locks and Synchronization 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 67 Mutual Exclusion Atomic Operations Execution by a Thread Improper Usage will result in Access to shared data is serialized using mechanisms that ensure only one thread reads or writes to the shared data at any time. Deadlocks Resource Starvation Execution by a Thread Examples in Java • Shared data access cannot be interrupted by threads. • Since the operation is atomic shared data is always kept in valid state. • Atomic operations are basis for many thread locking mechanisms and used to implement MutEx. • Usually requires machine language instructions Atomic Boolean Atomic Integer Atomic Long Atomic Reference … Immutable Objects Supported in AppliFire Object State Result • Object State cannot be changed after construction • Read-Only data is shared • Mutations are allowed using Builder Pattern creating a new Object. • Entities can be created as Immutable objects. Thread Safe
  • 68. Dependency Injection and Service Scope REST Service, Domain Service (Business Rules), Repository 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 68 Request Default in AppliFire Bean Scope Definition Thread Safety The bean is created every time when a new request comes in. Thread Safe Session Bean Scope Definition Thread Safety • The bean is created for the user’s session. • Asynchronous access from a Web 2.0 app can corrupt the data (multiple tabs). • Developers need to ensure that shared state is NOT corrupt. Not Thread Safe Singleton Bean Scope Definition Thread Safety • Only ONE instance of the bean is created. • Any Bean without a STATE can be singleton. • Asynchronous access from a Web 2.0 app can corrupt the data (multiple tabs). • Developers need to ensure that shared state is NOT corrupt. Not Thread Safe
  • 69. Generics and Type Safety Platform automatically takes care of the Type Safety for all the layers in the Architecture 1. App Service Layer (REST) 2. Domain Service (Business Rules) 3. Repository (Data Layer) (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 69 Source: https://docs.oracle.com/javase/tutorial/java/generics/subtyping.html • Type Inference • Upper bounded Wildcards • Lower bounded Wildcards • Unbounded Wildcards
  • 70. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 70 1. In-Memory Computing 2. On Performance and Scalability 3. Low Latency and Java 4. Scalability Best Practices – eBay 5. CAP Theorem Scalability
  • 71. Caching Technologies • Hazelcast • Oracle Coherence • Infinispan • Ehcache • Apache Ignite • GridGain • GemFire Operational In-Memory Computing Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging] 71 Cache Topology Standalone This setup consists of a single node containing all the cached data. It’s equivalent to a single- node cluster and does not collaborate with other running instances. Distributed Data is spread across multiple nodes in a cache such that only a single node is responsible for fetching a particular entry. This is possible by distributing/partitioning the cluster in a balanced manner (i.e., all the nodes have the same number of entries and are hence load balanced). Failover is handled via configurable backups on each node. Replicated Data is spread across multiple nodes in a cache such that each node consists of the complete cache data, since each cluster node contains all the data; failover is not a concern. Caching Strategies Read Through A process by which a missing cache entry is fetched from the integrated backend store. Write Through A process by which changes to a cache entry (create, update, delete) are pushed into the backend data store. It is important to note that the business logic for Read- Through and Write-Through operations for a specific cache are confined within the caching layer itself. Hence, your application remains insulated from the specifics of the cache and its backing system-of-record. Caching Mode Embedded When the cache and the application co-exist within the same JVM, the cache can be said to be operating in embedded mode. The cache lives and dies with the application JVM. This strategy should be used when: • Tight coupling between your application and the cache is not a concern • The application host has enough capacity (memory) to accommodate the demands of the cache Client / Server In this setup, the application acts as the client to a standalone (remote) caching layer. This should be leveraged when: • The caching infrastructure and application need to evolve independently • Multiple applications use a unified caching layer which can be scaled up without affecting client applications.
  • 72. 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 72 Operational In-Memory Computing Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging] Application Standalone Embedded Cache JVM Application Node 1 Embedded Cache JVM Application Node 2 Embedded Cache JVM Stand Alone Embedded Cache Distributed or Replicated Cache Cluster Application Using Client API JVM Standalone Remote Cache JVM Stand Alone Client Server Cache Distributed or Replicated Cache Cluster Node 1 Remote Cache JVM Node 2 Remote Cache JVM Application Using Client API JVM
  • 73. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 73 Operational In-Memory Computing Java Cache API: JSR 107 [ DistributedCaching/DistributedComputing/DistributedMessaging]
  • 74. On Performance & Scalability Stateless Architecture & Cloud Computing 16December 2015 (c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 74 1. DB Block Size (8K for Transaction Processing and higher – 16K or 32K for Read intensive Operations) 2. SGA – System Global Area 3. In – Memory Column Store (Oracle 12c) in SGA 1. Tables 2. Materialized Views 3. Partitions (All or Selective) 4. Tablespace (@ this level, all tables and materialized views will be in Memory) ALTER SYSTEM SET INMEMORY_SIZE = 100G; 4. Memory Compression for Column Store 5. Query Optimization based on Explain Plan 1. Cardinality (Estimated number of rows returned in each operations) 2. Access Method (Table Scan or Index Scan) 3. Join Method (Hash, Sort, Merger) 4. Join Order (Order in which tables are joined) 5. Partitioning (Access only required partitions) 6. Parallel Execution • Examples -> Next Database – (Oracle)Application Server 1. Thread Pools 2. JDBC Connection Pool Size 3. Compression for Data Transfer 4. Optimizing the CSS & JS files 5. Load Balancing for Web Server and App Server Web Application 1. On Demand Loading (Modularized JS files) 2. Shared Nothing Architecture for Java 3. Stateless Architecture – No Session info is stored in App Server (Tomcat). 4. Session info is stored in the Database layer. 5. Optimize the Query based on Database Explain plans. 6. Aggregate Roots based on DDD 7. Command and Query Responsibility Segregation for better Read and Write operations.
  • 75. SQL Query Performance : Explain Plan MySQL 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 75 Table Rows Order 326 Order Details 2996 Products 110 Product Lines 7 Customers 122 If You don’t have Primary Indexes, MySQL Explain Plan shows the following…….  What database does? 7 × 110 × 122 × 326 × 2996 91,750,822,240 Records Table Rows Order 1 Order Details 4 Products 1 Product Lines 1 Customers 1 After Adding Primary Key Index 1 x 1 x 4 x 1 x 1 4 Records Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
  • 76. Just adding Indexes is not enough! 16December 2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 76 Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/ # Select Type Table Possible Keys Reference Rows 1 Primary Derived 219 2 Derived Products 110 3 Derived Product Lines Primary Classicmodels.p.productline 1 4 Union Product Variant 109 5 Union Products Primary Classicmodels.v.productCode 1 6 Union Product Line Primary Classicmodels.p.productline 1 7 Union Result Union 2 and 3 Number of records scanned 219 x 110 x 1 x 109 x 1 x 1 2,625, 810 records Explain Plan Result
  • 77. 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 77 # Select Type Table Possible Keys Reference Rows 1 Primary Derived2 12 2 Derived Products idx_buyPrice, idx_productLine 23 3 Derived Product Lines Primary Classicmodels.p.productline 1 4 Union Product Variant idx_buyPrice, idx_productCode 1 5 Union Products Primary, idx_productLine Classicmodels.v.productCode 1 6 Union Product Lines Primary Classicmodels.p.productline 1 7 Union Result Union 2, 3 Just adding Indexes is not enough! Optimize the query Number of records scanned 12 x 23 276 Records Source: http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/ Explain Plan Result Filters Data At Join
  • 78. Low Latency and Java : 100 Nano Seconds to 100 Milliseconds 1. Immutable Objects 2. Share Nothing Architecture 3. Stateless Architecture 4. Lock Free and Wait Free Patterns 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 78Zing Java Virtual Machine • Pause less Garbage Collection • C4 Garbage Collection Algo • Elastic Java Heap Memory • Tuned for Low Latency Apps JVM Collector Name Young Gen Old Gen Oracle JVM ParallelGC Monolithic, stop the world, copying Monolithic, stop-the-world, Mark/Sweep/Compact CMS (Concurrent / Mark / Sweep) Monolithic, stop the world, copying Mostly concurrent marker, concurrent, non-compacting sweeper, fall back to monolithic stop-the-world compaction G1 (Garbage First) Monolithic, stop the world, copying Mostly concurrent marker, mostly incremental compaction, fall back to monolithic stop-the-world Oracle Jrockit Dynamic Garbage Collector Monolithic, stop the world, copying Mark/Sweep - can choose mostly concurrent or parallel, incremental compaction, fall back to monolithic stop-the- world IBM J9 Balanced Monolithic, stop the world, copying Mostly concurrent marker, mostly incremental compaction, fall back to monolithic stop-the-world Optthruput Monolithic, stop the world, copying Parallel Mark/Sweep, stop-the-world compaction Zing C4 Concurrent, Compacting C4 – Continuously Concurrent Compacting Collector
  • 79. CAP Theorem by Eric Allen Brewer 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 79 Pick Any 2!! Say NO to 2 Phase Commit  Source: http://en.wikipedia.org/wiki/Eric_Brewer_(scientist) CAP 12 years later: How the “Rules have changed” http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed “In a network subject to communication failures, it is impossible for ant web service to implement an atomic read / write shared memory that guarantees a response to every request.”
  • 80. Java & .NET 2 PC 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 80
  • 81. Distributed Transactions : 2 Phase Commit 2 PC or not 2 PC, Wherefore Art Thou XA? 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 81 How does 2PC impact scalability? • Transactions are committed in two phases. • This involves communicating with every database (XA Resources) involved to determine if the transaction will commit in the first phase. • During the second phase each database is asked to complete the commit. • While all of this coordination is going on, locks in all of the data sources are being held. • The longer duration locks create the risk of higher contention. • Additionally, the two phases require more database processing time than a single phase commit. • The result is lower overall TPS in the system. Transaction Manager XA Resources Request to Prepare Commit Prepared Prepare Phase Commit PhaseDone Source : Pat Helland (Amazon) : Life Beyond Distributed Transactions Distributed Computing : http://dancres.github.io/Pages/ Solution : Resilient System • Event Based • Design for failure • Asynchronous Recovery • Make all operations idempotent. • Each DB operation is a 1 PC
  • 82. Stored Procedures : Procedural Languages 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 82 Database Languages DB2 SQL PL or Java MS SQL Server T-SQL or .Net MySQL SQL/PSM Oracle PL/SQL or Java PostgreSQL PL/pgSQL Sybase T-SQL 1. Vendor Specific Code base, Portability Issues. 2. No Abstraction of Business Logic from Persistence Layer. 3. Based on 25 years OLD client server architecture. 4. Scalability Issues in Cloud Computing era. 5. You are still in the Procedural world! Pros for Stored Procedure Performance Security In Reality Why Big Data? No SQL, Mongo DB Remember Target credit breach in 2014! Scalability is a big issue Stored Procedures are BAD! Period If you are still in the world of stored procedures, you are creating legacy Apps NOW!!!!
  • 83. Scalability Best Practices : Lessons from eBay Best Practices Highlights #1 Partition By Function • Decouple the Unrelated Functionalities. • Selling functionality is served by one set of applications, bidding by another, search by yet another. • 16,000 App Servers in 220 different pools • 1000 logical databases, 400 physical hosts #2 Split Horizontally • Break the workload into manageable units. • eBay’s interactions are stateless by design • All App Servers are treated equal and none retains any transactional state • Data Partitioning based on specific requirements #3 Avoid Distributed Transactions • 2 Phase Commit is a pessimistic approach comes with a big COST • CAP Theorem (Consistency, Availability, Partition Tolerance). Apply any two at any point in time. • @ eBay No Distributed Transactions of any kind and NO 2 Phase Commit. #4 Decouple Functions Asynchronously • If Component A calls component B synchronously, then they are tightly coupled. For such systems to scale A you need to scale B also. • If Asynchronous A can move forward irrespective of the state of B • SEDA (Staged Event Driven Architecture) #5 Move Processing to Asynchronous Flow • Move as much processing towards Asynchronous side • Anything that can wait should wait #6 Virtualize at All Levels • Virtualize everything. eBay created their on O/R layer for abstraction #7 Cache Appropriately • Cache Slow changing, read-mostly data, meta data, configuration and static data. 16December2015(c)2015,AlgorhythmTechPvtLtd.Pune,India 83 Source: http://www.infoq.com/articles/ebay-scalability-best-practices
  • 85. Technology Stack 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 85 AppliFire App Developer
  • 86. AppliFire App Architecture 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 86 Scalability Stateless Architecture Security Built-in Security based on Standards Resilient Better Management of App App Architecture Behavior Driven Development Model, View, ViewModel Domain Driven Design • App Design is based on Stateless Design • Stateless REST Services • No Data is stored in App Server Sessions • No SQL Injection, CSRF, Session Hijacking • OWASP / SANS • Vulnerability Code Analysis • RBAC and LBAC • App (UI) State Saving in the Database • App (Server) State Saving in the Database • Requirement Analysis • Auto Create Functional Test Cases • Event Sourcing and CQRS • Aggregate Roots, Value Objects
  • 87. Stateless Architecture 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 87
  • 88. Security : Built-in Framework for RBAC / LBAC 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 88 Organization Security When Login Hour Where IP, Geo How App, API Feature Security What Action RBAC Data Security (CRUD) Read Write Full Access In-Depth Security Data Validity Tokeni zation Conditional Masking LBAC RBAC & LBAC
  • 89. JSON Web Tokens : http://jwt.io JSON Web Tokens (JWT) Pronounced “jot”, are a standard since the information they carry is transmitted via JSON. We can read more about the draft, but that explanation isn’t the most pretty to look at. JSON Web Tokens work across different programming languages: JWTs work in .NET, Python, Node.JS, Java, PHP, Ruby, Go, JavaScript, and Haskell. So you can see that these can be used in many different scenarios. JWTs are self-contained: They will carry all the information necessary within itself. This means that a JWT will be able to transmit basic information about itself, a payload (usually user information), and a signature. JWTs can be passed around easily: Since JWTs are self-contained, they are perfectly used inside an HTTP header when authenticating an API. You can also pass it through the URL. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 89 Header Payload Secret JSON Web Signature JWS: RFC 7515 JSON Web Encryption JWE : RFC 7516 JSON Web Key JWK : RFC 7517 JSON Web Algorithms JWA : RFC 7518 JSON Web Token JWT: RFC 7519
  • 90. Authentication Traditional Way 16 December 2015 90The Problems with Server Based Authentication. A few major problems arose with this method of authentication. Sessions: Every time a user is authenticated, the server will need to create a record somewhere on our server. This is usually done in memory and when there are many users authenticating, the overhead on your server increases. Scalability: Since sessions are stored in memory, this provides problems with scalability. As our cloud providers start replicating servers to handle application load, having vital information in session memory will limit our ability to scale. CORS: As we want to expand our application to let our data be used across multiple mobile devices, we have to worry about cross-origin resource sharing (CORS). When using AJAX calls to grab resources from another domain (mobile to our API server), we could run into problems with forbidden requests. CSRF: We will also have protection against cross-site request forgery (CSRF). Users are susceptible to CSRF attacks since they can already be authenticated with say a banking site and this could be taken advantage of when visiting other sites. With these problems, scalability being the main one, it made sense to try a different approach.
  • 91. 16 December 2015 91 JSON Web Token: Stateless Architecture How it Works Token based authentication is stateless. We are not storing any information about our user on the server or in a session. 1. User Requests Access with Username / Password 2. Application validates credentials 3. Application provides a signed token to the client 4. Client stores that token and sends it along with every request 5. Server verifies token and responds with data Every single request will require the token. This token should be sent in the HTTP header so that we keep with the idea of stateless HTTP requests. We will also need to set our server to accept requests from all domains using Access- Control-Allow-Origin: *. What’s interesting about designating * in the ACAO header is that it does not allow requests to supply credentials like HTTP authentication, client-side SSL certificates, or cookies.
  • 92. JSON Web Token : Benefits 92 Stateless and Scalable Tokens stored on client side. Completely stateless, and ready to be scaled. Our load balancers are able to pass a user along to any of our servers since there is no state or session information anywhere. Security The token, not a cookie, is sent on every request and since there is no cookie being sent, this helps to prevent CSRF attacks. Even if your specific implementation stores the token within a cookie on the client side, the cookie is merely a storage mechanism instead of an authentication one. There is no session based information to manipulate since we don’t have a session! Extensibility (Friend of A Friend and Permissions) Tokens will allow us to build applications that share permissions with another. For example, we have linked random social accounts to our major ones like Facebook or Twitter. Multiple Platforms and Domains When the application and service expands, we will need to be providing access to all sorts of devices and applications (since the app will most definitely become popular!). Having the App API just serve data, we can also make the design choice to serve assets from a CDN. This eliminates the issues that CORS brings up after we set a quick header configuration for our application. Standards Based
  • 93. JSON Web Token : Anatomy 93 Header Payload Secret Header The header carries 2 parts: 1. declaring the type, which is JWT 2. the hashing algorithm to use (HMAC SHA256 in this case) Payload The payload will carry the bulk of our JWT, also called the JWT Claims. This is where we will put the information that we want to transmit and other information about our token. Secret This signature is made up of a hash of the following components: 1. the header 2. the payload 3. secret The secret is the signature held by the server. This is the way that our server will be able to verify existing tokens and sign new ones. This gives us the final part of our JWT. eyJhbGcioiJI---.eyJpc3Mioi---.03f32998---
  • 94. JSON Web Token : Anatomy – The Claims 16 December 2015 94 Registered Claims Claims that are not mandatory whose names are reserved for us. These include: • iss: The issuer of the token • sub: The subject of the token • aud: The audience of the token • exp: This will probably be the registered claim most often used. This will define the expiration in Numeric Date value. The expiration MUST be after the current date/time. • nbf: Defines the time before which the JWT MUST NOT be accepted for processing • iat: The time the JWT was issued. Can be used to determine the age of the JWT • jti: Unique identifier for the JWT. Can be used to prevent the JWT from being replayed. This is helpful for a one time use token. Public Claims These are the claims that we create ourselves like user name, information, and other important information. Private Claims A producer and consumer may agree to use claim names that are private. These are subject to collision, so use them with caution.
  • 95. JWT Storage : Cookies Vs HTML5 Web Storage Cookies HTML Web Storage Access 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 95
  • 96. Resilient Architecture Recovery Oriented Architecture 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 96
  • 97. Morph your ideas into apps
  • 98. 16 December 2015 (c)2015,AlgorhythmTechPvtLtd.Pune,India 98BLUE PRINTS Language and Database Agnostic Visual Modeler Drag and Drop UI For Design User Experience Built-In Search Engine for Enterprise Data App Health Better Management of App DevOps Create, Ship & Manage On Cloud / On Premise • Re-Usable Future Proof Blue Prints • Auto Create Best Design for the Apps • Auto Create Good Quality Codebase • Auto Create Complete Test Suite • On Demand Real-time Dashboards • Searches Documents and Databases • App Context Aware Search Engine • Data Analytics using Data Visualizer • Real-time Log Analysis & Troubleshooting • Metrics and Gauges for Production Team • System and App Health Metrics • Proactive App Management • 100x Speed in Developer Productivity • Code Feedback using Standard IDE • Ship to any Cloud Service • Create Micro Services • Manage the Apps using Command Center • Database Agnostic Domain Modeling • Drag & Drop Business Rule Builder • Drag & Drop Service Builder • Drag & Drop UI Builder AppliFire Differentiators
  • 99. AppliFire SDLC 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 99 Agile Project Management Blue Prints MVVM, DI AOP, DDD Design Patterns Code Factory Polyglot Programming Java, JS, HTML5… BDD, Automated Tests BDD : Features, Scenarios SCRUM, XP Continuous Integration Jenkins Spring IO, Web Archive, Smart Devices – Cordova Facebook – React Native Features, Scenarios To Blue Prints Deploy Design / Architecture Auto Code Generation Build Management Unit / Integration Testing Model The Domain Manual Code Edit Using Std IDE Source Code Repository
  • 100. AppliFire : User Workspace using Docker Containers 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 100 App Developers Environment x ‘n’ number of DevelopersspIDEr+ Container Manager On Demand Containers Session based Containers 2 3 4 5 6 1 1 Design Apps for Web and Smart Devices 2 Auto Generate Code 3 Compile Code 4 Deploy the App 5 Database Deploy 6 Test the App File System Persistence AppliFire Platform On-Premise / Cloud Installation
  • 101. spIDEr+ RAD Platform 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 101 Multiple Platforms, Relational Databases (Oracle, MySQL, MS SQL) and Big Data Support (Mongo DB, Hadoop, Cassandra) Built-in Security Pluggable Authentication Search Engine Cloud Drive Reporting & Dashboard Framework, Data Browsers Calendar Integration Framework REST , SOAP, JMS, MQTT, CoAP BLE, ZigBee Cloud Computing Private, Public & Hybrid Computing. Stateless Design Multi-Tenancy Built-In Analytics & Rule and Process Flow & Workflow Engines Power Components Secure & Polymorphic Integrated Development Environment for Rapid App Development Unprecedented 100x Speed For Creating, Deploying & Managing Next Gen Enterprise & Consumer Apps Platform as a Service
  • 102. The buZZor Platform 102 Visual Modeller Designer Responsive UI Web Android iOS Windows Black berry Event Sourcing & CQRS Domain Driven Design Stateless Architecture Behaviour Driven Development Blue Prints Model View ViewModel REST + HATEOS SOA / EDA / ROA TOGAF / MDA JSON UI Import Export UML Code Factory Polyglot Programming Java JS HTM L 5 SQL / JPQL Scala Ruby PHP C# Swift DB Factory Polyglot Databases Oracl e MyQ L DB2 MS SQL Orient DB Mong o DB Cassa ndra No SQL Neo 4J Programming Language & Database Agnostic Design Available in current version Supported in the next version spIDEr+ RAD Differentiators
  • 103. App Engine with built-in App Store 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 103 App Store can be accessed (with download facility disabled) • Using Web Interface (Chrome, Safari, Firefox, IE) • Using Customer Specific Android App Store • Downloading of the Apps will be enabled Only after secure Authentication. • App availability will be based on Role based Access Control. App Store Admins can classify Apps into various Application Groups Access rights (for the Apps) can be applied to • Apps • Groups (Applicable to all the Apps in the Group) Support Single Sign On for Enterprise Apps Enterprise App Store
  • 104. Zen+ Command Center 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 104 Monitor System Usage Monitor App Usage Health Monitoring Automated App Metrics Real Time Log Level changes for Features or modules in Production Environment Troubleshoot Issues
  • 105. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 105 Customer 1 O-Development Center Engineering Team Customer 2 O-Development Center Engineering Team Customer 3 O-Development Center Engineering Team Customer n O-Development Center Engineering Team O = Off / On Shore AppliFire DevOps Platform Available as aPaaS in Amazon Cloud On Premise Deployment Customer Specific Development Environment AppliFire : Deployment for IT Services
  • 106. AppliFire : The Complete DevOps Platform 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 106 CREATEspIDEr+ RAD Platform (aPaaS) MANAGECommand & Control Center SHIPApp Engine / Docker Containers Morphing Ideas into Apps
  • 107. 16 December 2015(c) 2015, Algorhythm Tech Pvt Ltd. Pune, India 107 Thank You Abhaya Borwankar Sandeep Pendurkar Ajit Singh Araf Karsh Hamid abhaya.borwankar@algorhythm.co.in sandeep.pendurkar@algorhythm.co.in ajit.singh@algorhythm.co.in araf.karsh@algorhythm.co.in

Notas del editor

  1. Errors Per Lines of Code Defects Per Lines of Code (a) Industry Average: "about 15 - 50 errors per 1000 lines of delivered code." Steve McConnell further says this is usually representative of code that has some level of structured programming behind it, but probably includes a mix of coding techniques. (b) Microsoft Applications: "about 10 - 20 defects per 1000 lines of code during in-house testing, and 0.5 defect per KLOC (KLOC IS CALLED AS 1000 lines of code) in released product (Moore 1992)." He attributes this to a combination of code-reading techniques and independent testing (discussed further in another chapter of his book). (c) "Harlan Mills pioneered 'cleanroom development', a technique that has been able to achieve rates as low as 3 defects per 1000 lines of code during in-house testing and 0.1 defect per 1000 lines of code in released product (Cobb and Mills 1990). A few projects - for example, the space-shuttle software - have achieved a level of 0 defects in 500,000 lines of code using a system of format development methods, peer reviews, and statistical testing.” http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 http://www.mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/
  2. http://www.omg.org/news/meetings/workshops/presentations/uml_presentations/Tutorial%204-2%2000-06-03.pdf
  3. Source: MSDN – Microsoft https://msdn.microsoft.com/en-us/library/dn568103.aspx Martin Fowler : CQRS – http://martinfowler.com/bliki/CQRS.html Udi Dahan : CQRS – http://www.udidahan.com/2009/12/09/clarified-cqrs/ Greg Young : CQRS - https://www.youtube.com/watch?v=JHGkaShoyNs Bertrand Meyer – CQS - http://en.wikipedia.org/wiki/Bertrand_Meyer http://en.wikipedia.org/wiki/Command–query_separation https://skillsmatter.com/courses/345-greg-youngs-cqrs-domain-events-event-sourcing-and-how-to-apply-ddd
  4. Greg Young Functional Programming with DDD : https://skillsmatter.com/skillscasts/3191-ddd-functional-programming Jan Kronquist : Aggregates + Event Sourcing http://www.jayway.com/2013/03/08/aggregates-event-sourcing-distilled/ DDD + CQRS + Event Sourcing http://www.kenneth-truyers.net/2013/12/05/introduction-to-domain-driven-design-cqrs-and-event-sourcing/ http://cqrs.nu/tutorial/cs/01-design http://ookami86.github.io/event-sourcing-in-practice/#title.md https://vaughnvernon.co/?page_id=168
  5. http://plainoldobjects.com http://plainoldobjects.com/2015/01/04/example-application-for-my-qconsf-presentation-about-building-microservices-with-event-sourcing-and-cqrs/
  6. http://domainlanguage.com/ddd/patterns/DDD_Reference_2011-01-31.pdf http://www.infoq.com/interviews/domain-driven-design-eric-evans
  7. http://www.methodsandtools.com/archive/onionsoftwarearchitecture.php http://www.infoq.com/news/2014/10/ddd-onion-architecture http://jeffreypalermo.com/blog/the-onion-architecture-part-1/
  8. http://www.infoq.com/articles/ddd-contextmapping http://www.slideshare.net/aca_it/modularity-ddd?from_action=save
  9. http://martinfowler.com/bliki/BoundedContext.html
  10. https://dzone.com/refcardz/getting-started-domain-driven http://www.tutorialspoint.com/design_pattern/index.htm http://www.servicedesignpatterns.com http://www.enterpriseintegrationpatterns.com http://martinfowler.com/books/eaa.html https://domainlanguage.com/ddd/
  11. http://martinfowler.com/bliki/DDD_Aggregate.html
  12. http://martinfowler.com/bliki/DDD_Aggregate.html
  13. http://martinfowler.com/bliki/DDD_Aggregate.html
  14. http://camel.apache.org/enterprise-integration-patterns.html
  15. http://camel.apache.org/enterprise-integration-patterns.html
  16. http://camel.apache.org/enterprise-integration-patterns.html
  17. http://camel.apache.org/enterprise-integration-patterns.html
  18. http://camel.apache.org/enterprise-integration-patterns.html
  19. http://camel.apache.org/enterprise-integration-patterns.html
  20. http://camel.apache.org/enterprise-integration-patterns.html
  21. http://camel.apache.org/enterprise-integration-patterns.html
  22. http://martinfowler.com/bliki/DDD_Aggregate.html
  23. http://domainlanguage.com/ddd/patterns/DDD_Reference_2011-01-31.pdf http://dddsample.sourceforge.net/patterns-reference.html Building Blocks of a Model-Driven Design Aggregate [discussion] [code example] Domain Event [discussion] [code example] Entity [discussion] [code example] Value Object [discussion] [code example] Repository [discussion] [code example] Service [discussion] [code example] Specification [code example] Layered Architecture [discussion] Service Layer [discussion]
  24. http://domainlanguage.com/ddd/patterns/DDD_Reference_2011-01-31.pdf http://dddsample.sourceforge.net/patterns-reference.html Building Blocks of a Model-Driven Design Aggregate [discussion] [code example] Domain Event [discussion] [code example] Entity [discussion] [code example] Value Object [discussion] [code example] Repository [discussion] [code example] Service [discussion] [code example] Specification [code example] Layered Architecture [discussion] Service Layer [discussion]
  25. http://martinfowler.com/bliki/DDD_Aggregate.html Effective Aggregate Design By Vaughn Vernon Part 1 : http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf Part 2 : http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf Part 3 : http://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_3.pdf Video Part 2 : https://vimeo.com/33708293
  26. https://en.wikipedia.org/wiki/Data_transfer_object#cite_note-fowlerLocalDTO-3 http://martinfowler.com/eaaCatalog/dataTransferObject.html http://www.adam-bien.com/roller/abien/entry/javaee_7_retired_the_dto http://www.adam-bien.com/roller/abien/entry/value_object_vs_data_transfer http://www.oracle.com/technetwork/java/transferobject-139757.html http://www.adam-bien.com/roller/abien/entry/a_good_architecture_is_all http://www.oracle.com/technetwork/java/transferobject-139757.html https://msdn.microsoft.com/en-us/library/ms978717.aspx
  27. https://en.wikipedia.org/wiki/Data_transfer_object#cite_note-fowlerLocalDTO-3 http://martinfowler.com/eaaCatalog/dataTransferObject.html http://www.adam-bien.com/roller/abien/entry/javaee_7_retired_the_dto http://www.adam-bien.com/roller/abien/entry/value_object_vs_data_transfer
  28. http://www.javaworld.com/article/2078042/java-app-dev/domain-driven-design-with-java-ee-6.html
  29. Writing code in such a way that it can be partially executed by a thread, reexecuted by the same thread or simultaneously executed by another thread and still correctly complete the original execution. This requires the saving of state information in variables local to each execution, usually on a stack, instead of in static or global variables or other non-local state. All non-local state must be accessed through atomic operations and the data-structures must also be reentrant.
  30. Java Concurrent Atomic Packages http://docs.oracle.com/javase/7/docs/api/index.html?java/util/concurrent/atomic/AtomicInteger.html
  31. https://docs.oracle.com/javase/tutorial/java/generics/subtyping.html Type Erasure Generics were introduced to the Java language to provide tighter type checks at compile time and to support generic programming. To implement generics, the Java compiler applies type erasure to: Replace all type parameters in generic types with their bounds or Object if the type parameters are unbounded. The produced bytecode, therefore, contains only ordinary classes, interfaces, and methods. Insert type casts if necessary to preserve type safety. Generate bridge methods to preserve polymorphism in extended generic types. Type erasure ensures that no new classes are created for parameterized types; consequently, generics incur no runtime overhead.
  32. https://docs.oracle.com/database/121/TGDBA/pfgrf_perf_overview.htm#TGDBA02503 https://docs.oracle.com/database/121/TGSQL/toc.htm https://docs.oracle.com/database/121/TGSQL/tgsql_optcncpt.htm#TGSQL94983 Understanding Oracle Explain Plan : http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf
  33. https://docs.oracle.com/database/121/TGDBA/pfgrf_perf_overview.htm#TGDBA02503 https://docs.oracle.com/database/121/TGSQL/toc.htm https://docs.oracle.com/database/121/TGSQL/tgsql_optcncpt.htm#TGSQL94983 Understanding Oracle Explain Plan : http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf
  34. http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
  35. http://www.oracle.com/ru/corporate/events/quarter-four/virtual-machine-java-404173-ru.pdf http://www.javaworld.com/article/2074400/core-java/javaone-2011--every-last-nanosecond--tuning-the-jvm-for-extreme-low-latency.html http://java.dzone.com/articles/c-java-low-latency http://logit.yudichev.net/2014/07/low-latency-principles-and-techniques.html http://www.slideshare.net/SimonRitter/low-latencyapps http://www.infoq.com/articles/low-latency-vp http://www.azulsystems.com/technology/azul-technology http://www.azulsystems.com/technology/c4-garbage-collector http://www.azulsystems.com/sites/default/files//images/Understanding_Java_Garbage_Collection_v4.pdf http://marxsoftware.blogspot.in http://java.dzone.com/articles/c-java-low-latency
  36. http://en.wikipedia.org/wiki/CAP_theorem http://www.julianbrowne.com/article/viewer/brewers-cap-theorem http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed
  37. Pat Helland (Amazon) : Life beyond distributed transactions… http://adrianmarriott.net/logosroot/papers/LifeBeyondTxns.pdf
  38. CRUD, Only When You Can Afford It   Maarten Mullender Microsoft Corporation https://msdn.microsoft.com/en-us/library/ms978509.aspx
  39. http://www.infoq.com/articles/ebay-scalability-best-practices
  40. http://jwt.io https://scotch.io/tutorials/the-anatomy-of-a-json-web-token#what-does-a-jwt-look-like? https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ https://github.com/jwtk/jjwt JSON Web Token : RFC 7519 : https://tools.ietf.org/html/rfc7519 JSON Web Signature : RFC 7515 : https://tools.ietf.org/html/rfc7515 JSON Web Encryption : RFC 7516 : https://tools.ietf.org/html/rfc7516 JSON Web Key : RFC 7517 : https://tools.ietf.org/html/rfc7517 JSON Web Algorithms : RFC 7518 : https://tools.ietf.org/html/rfc7518
  41. https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication
  42. https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication
  43. https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication
  44. http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#RegisteredClaimName https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication http://tools.ietf.org/html/draft-jones-json-web-token-05 https://stormpath.com/blog/jjwt-how-it-works-why/ https://github.com/jwtk/jjwt https://docs.stormpath.com/java/servlet-plugin/
  45. Security Issues http://jwt.io https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ https://github.com/jwtk/jjwt/issues/20 https://stormpath.com/blog/jwt-java-create-verify/ https://github.com/jwtk/jjwt https://bitbucket.org/b_c/jose4j/wiki/04-01-15-Transparency CSRF https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
  46. https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/