SlideShare a Scribd company logo
1 of 31
Download to read offline
SOFTWARE AS A SERVICE – FIRST THINGS FIRST
Damon Wilder Carr, CTO agilefactor
‘A pattern language approach to empowering stakeholder communications’
Overview
                     The problem with so many TLAs
An attempt to
                     Even the SaaS acronym is commonly thought to be
eliminate the         SOA. This is not necessarily true!
Industry Fluff
                     The common sense bootstrap to SaaS
while not being
                       Which is not so common…..
overly high-
level                A meta model view of the ‘Easy’
                       The ‘Blank Whiteboard’ view
Concise              SaaS Expected Results
statements on        A meta model view of the ‘hard’
what you should
                       The ‘Constrained yet Optimized’ Evolving State
demand for
SaaS business        Your Components have the GAC, what do your
                      services have?
driven value
                     The Combined Dimensions
                     Service Repository and Governance
                     Common Feedback and Concerns
The problem with so many TLAs

The ‘Buzz’ Factor      I am using SaaS on purpose
                           For some, SaaS means ‘external vendors who manage their services which
and those who               you integrate with yours’
like confusion             For others, it means a philosophical approach in how you view the role of
                            software strategically and architecturally across all domains (this is the
Why a lack of               view I am proposing we use, not SOA as ‘Software as a Service’ is
shared                      incredibly specific if we agree it is (grin)
understanding is       Our industry suffers from severe ambiguity in the core areas that
                        require clarity
now (and has
been) systemic to      Ask 10 technologists to define Service Oriented Architecture and
                        you’ll likely get 10 different answers
Software
Engineering            This encompasses not just SOA but its constituent parts such as
                        ‘Domain Driven Design’ (and there are some who would argue my
                        statement that DDD is even a constituent.
Why we need to
                           We have no ‘Webster's Dictionary’ that all have agreed to follow
resolve this               Therefore we can only do this at our organization. This is the pattern
internally                  language
                       Everyone ends up being very confused and ‘stick’
                       Before we can get stuck our goal is to avoid this predictable problem
                        by proactively understanding it
The common sense bootstrap to SaaS – Not so common actually



A lesson from the        The largest impact for Design Patterns are not
Gang of Four              about code, UML Diagrams or technical
A statement of
                          details
immediate goals          What then?
related to a
common
                           These are important but have less to do with why
understanding
                            this is so transformative to teams
                           It’s all about the words.
A team that shares
                           They create succinct and unambiguous language
a vision with the
business                    for teams to reach increased bandwidth,
stakeholders using          however most technologist think in different terms
A COMMON                   In one phrase (or even word) you can create a
language is                 definitive and concrete shared understanding of
incredibly powerful
                            a best practice for a very tangible item, across
                            business domains, practice areas, etc.
A Pattern Language as the Artifact of Shared Understanding


  To address the
  problems teams
  face in
  communication, we
  use the term
  ‘pattern language’
  to describe our
  immediate
  evolving solution
The common sense bootstrap to SaaS – Not so common actually



In technical areas like      If this presentation had one point, this is it:
SaaS that are ‘trendy’           We must create a clear and concise language and set of
and often ill-defined,
there are strong                  semantics (collectively called a Pattern Language) which
motivatig factors for             attack all ambiguity and clarity in this often cloudy area
vendors, consultants,
etc. to MAKE THIS            The TLA ‘SOA’ is practically useless now so I use SaaS
MUCH HARDER THEN              instead. Full definitions are of course key to this
IT IS
                              presentations and requested clarifications are expected
Not so long ago it
was very hard, but
                             Stakeholders in SaaS cannot execute ‘actionable’ steps
now with the third-           due to confusion on design, development, architecture, etc.
generation offerings          related to a clear pattern language FIRST.
fully available SaaS
is not nearly as             OUR IMMEDIATE TO DO:
mystical.
                                 Produce a ‘Pattern Language’ (with easily accessed
But it is nearly                  references typically web based) for the SaaS space
impossible with                   (leveraging others work as well as our own, which is always
people/organizations              evolving).
confusing everyone
with overloaded                  We will achieve a level of immediacy and an elimination of
definitons                        ambiguity in what we mean when we communicate across all
                                  levels of the enterprise (just like our services! – grin)
A meta model of the concepts
‘Blank Whiteboard’ Unconstrained Drivers
SaaS Expected Results

On occasion SaaS is
                              Interoperate cross-platform in complex
providing more then is         workflows with little to no effort or concern 
actually needed                Key SaaS Differentiation
(especially in a phased
approach)                     Dramatic End-State Reduction for Software
                               ‘Overhead’ tasks  Most work becomes
We all need to be clear
exactly why all this           strategic and benefits all systems
effort is being done.         Empower enterprise to achieve astounding
Almost all companies           agility to address issues, large and small (with
benefit but benefits are       IT as a true strategic asset, never a cost
ROI based
                               center)
                              Ability to choose third-party technology
                               based on ‘fitness to need’ rather then
                               ‘constraints of exiting systems’
SaaS Expected Results

   Short term ROI is impacted by additional effort, with
    mid-long term ROI showing dramatic improvement
     Typically  the largest ROI for non-SaaS is the initial release
      of a new ‘application’ if it effectively solves the business
      need (in its limited scope)
     With SaaS the concept of ‘Application’ is dramatically
      changed, and rather then a first release always providing
      the largest benefit, the ROI should increase for subsequent
      release as they (more then not) will address a far broader
      scope (more detail to come)
SaaS Expected Results


                              Elimination of the ‘impedance mismatch’ between
                               the business experts and the software professionals
                                  CRITICAL POINT: The real provider of this benefit is now
                                   almost always a precursor to an SaaS imitative. This is a
                                   core enabler of SaaS (the Domain Driven Design with
                                   supporting ‘component’ API) - more to come.
                                  This ‘Domain Driven Design’ precursor is now a given as the
                                   two predominant SaaS APIs are now (finally) native
In addition to the other           object-orientation and component lessons (WCF from
areas, these should be             Microsoft and SCA from a Java Consortium) – We will not
in our thoughts as a               get much into the implementation today I suspect
good measure (when we             Remember that success in SaaS interactions is quite
                                   different then any traditional RPC or Distributed Object
are uncertain) about               Framework. Although the new APIs allowing seamless
decisions.                         OO practices to build SaaS, remember this power can
                                   ‘empower you to fail’.
                                  We will cover specifics on that topic in great detail in
                                   future discussions
SaaS Expected Results

SaaS is a              MEASURE: Most development – code even –
process, not a
single end-state        becomes understandable by your most advanced
                        business analysts (or we are probably doing
The stages of           something) – MUCH more to come
evolution to ‘get
to’ SaaS often         It is common to have a subgroup of the development
provide many            team focus more on the infrastructural issues and a
of the same
benefits as SaaS
                        (typically larger) team to be far more business
itself                  facing (but this is not always the case)
                           For example, the infrastructure team would develop a
The maturity
level of ‘when’
                            far deeper mastery of the enabling SaaS API typically
to evolve to the            when compared to the more ‘SaaS Composite Delivery’
final stage is              team. This term is more accurate then ‘Application’
non-trivial and
assumes a vast         As all core individuals driving solutions have created
level of                a (ring a bell?) COMMON PATTERN LANGUAGE it
competencies            becomes frictionless and all metrics are positively
across many
complex areas
                        impacted
SaaS Expected Results


                      While your systems are ‘individual’ and ‘autonomous’
Probably the
                       as required, however they also are fully empowered
least understood       to engage in collaboration with any other service
of the benefits
and the most              Example: A third-party CRM system which has an
                           entrenched role for the marketing department can
confused                   seamlessly participate in complex messaging workflows
                           across separate systems (regardless of platform) via
Is absolutely              service interfaces
vital to SaaS                 The finance department (which uses a Linux based internally
success                        developed system running J2EE) would like to build
                               predictive revenue models using the new algorithms created
                               by the recent PhD hire out of Columbia.
                              These require detailed demographic information that only
                               exists in the CRM system. In addition we must extend their
                               proprietary browser interface (now showing its age) to not
                               perform well but not expose the user to any service
                               invocations. We must invoke services directly from the
                               browser using Ajax (a first for this application) to provide
                               acceptable performance
SaaS Expected Results


 All data must be real-time from ‘systems of record’
 As real-time data is processed and becomes aged, it will be
  stored as Business Intelligence information in a SQL Server
  2005 Analysis Services repository
 We want to leverage existing service interfaces and
  implementations, with a key change: We want messaging to be
  asynchronous and sent via our MQ Series environment – This
  must leverage the same work but ‘inject’ the channel type via
  external configuration
 Company executives will consume these as temporal graphs in
  their Executive Portal – SharePoint 2007 MOSS’. Also, key
  performance indicators which are derived from this OLAP
  repository are calculated for monitoring status
 Here we have Asynchronous queued communication, real-time
  high performance messaging and coordination
A meta model of the concepts – Real World Concerns
The Combined Dimensions
Your Components have the GAC, what do your services have?


For those who succeed  Service Repository
with SaaS, their success  Versioning is critical, and multiple contracts (same
can quickly become
their downfall.            idea as a .NET component version which is strongly
                                  signed) running concurrently is very common
Why? They number of
services are                     This is a logical organization (usually top down) for
unmanageable,                     cataloging, finding and consuming your service assets
undiscoverable, and               as well as much more (to be continued)
dependencies break left
and right. In short?             The number of services should explode over time, as
                                  everything becomes a part in the larger whole.
It’s precisely the same
issues we had in COM,             Without a repository you will find yourself unable to
and that the GAC                  use the SaaS Paradigm (by your very success in it!)
addresses (side by side
versioning for example
                                 If consumers cannot find what they need quickly and
is a critical capability in       logically, the very core reasons for having services
SaaS)                             will often spin out of control.
Service Repository and Governance

    “Development organizations have found they must evolve new
  compliance and incentive systems to ensure their SOAs are built on
                           stable foundations.”
 “Without governance, unfettered ad-hoc development of services

     threatens to undermine the promised benefits of SOA, such as
   improved productivity through service reuse and better alignment
                            with the business.”
 “Instead, SOA initiatives may lead organizations in a backwards
       direction, pouring development dollars into a black hole. “
                ‘Weak governance haunts SOAs’, David Longworth
         http://www.looselycoupled.com/stories/2005/gov-dev0606.html
                                       Also See:
                www.looselycoupled.com/opinion/2006/stanek-gov0517.html
Service Repository and Governance

Does that previous quote      Service Repository
sounds familiar? It sure          This is precisely what has killed most Object Oriented
does to me!                        reuse initiatives
Due to (I am guessing)            In spite of this rich history of failure, many are
the few companies who              repeating it with reckless abandon
have reached this level
of maturity now, this is          It’s far better to ‘just get something running’ as your
a subject that is                  repository (say the UDDI Service in Windows 2003)
amazingly glossed over             and evolve as required, as UDDI is the backbone of
far too often                      almost all candidate repositories.
What is an example?
                                      UDDI is now at Version 3.0 which Microsoft does not yet
UDDI is the most                       support
common (a free service            NOTE: When we have this problem we will not only
in Windows 2003) and               be prepared, it will be a very nice indication of our
available (for years               success
now) right is Visual
Studio.
Service Composition Strategy Guidance


   Service Composition as a Rule, not an Exception
     Most of the time you will combine services into composite
      solutions
     It will matter little to you the technical details about the
      services (such as platform, API, etc) as your interaction will
      likely be purely as ‘just a set of class instances and types’
     A dedicated discussion will likely follow on just this point,
      especially around
         Composite Security Contexts, Credentials, Single Sign-On,
          Authentication, etc.
         Inter-Service Transactional Scope
         Inter-Server Workflow/Orchestration (especially now with easy to
          use GUI tools)
Service Composition Strategy Guidance


                       To succeed in SaaS you cannot avoid spending a lot of time
For a real              composing services
measure of SaaS
                       What are some guiding principles around this?
success, just see
                           Service Characteristics that Help you Decide
how much you
                               How much can a service be reused? If not a lot is there a better
are composing                   design or further decomposition to get more reuse – a constant
rather then                     question to ask yourself in SaaS.
building new                   What is the type of logic that the service primarily performs? Just like
                                objects and the single responsibility rule, this loosely holds for your
services.                       lowest level services (as will be briefly discussed)
                               Another view of reuse is ‘How could this service possible be used
As services are                 across other areas we are not thinking of’?
built and your                       Every bit of effort becomes driven by these kind of thoughts, as your
                                      benefit soon becomes far less effort to do very hard tasks. It’s a matter of
repository grows                      ‘I know we have most of what we need already, I need to search the
this should                           repository for a few items, but we can deliver this new capability soon. In
                                      fact, this could also be leveraged by our marketing department as they
dominate your                         have a use case defined which we will end up covering 90% of. We will
development                           extend this to cover 100% and kill 2 birds.
                                     Hey, I just realized with these changes, this can become a service we can
efforts                               use in three more areas! We just freed up 20 hours of planned work!
Drivers for the ‘Three Service Composition’ categories


This work happens             To succeed in SaaS you cannot avoid
during your creation of        spending a lot of time composing services
the Domain Driven API
which is a necessary
                              What are some guiding principles around
precursor to full SaaS         this?
(they actually happen in          Service Characteristics that Help you Decide
parallel typically, with              How much can a service be reused? If not a lot
shifting focuses)                      is there a better design or further decomposition
Remember these all                     to get more reuse – a constant question to ask
evolve via Agile                       yourself in SaaS.
iterations, a lot of                  What is the type of logic that the service
feedback from the users,               primarily performs? Just like objects and the
and quality checkpoints                single responsibility rule, this loosely holds for
on all code via tangible               your lowest level services (as will be briefly
items like Continuous                  discussed)
Integration
Drivers for the ‘Three Service Composition’ categories


                                Another view of reuse is ‘How could this service
Want to start now on             possibly be used across other areas we are not
something? Know that a           thinking of’?
Mock Testing Framework
                                      Most effort is driven by these thoughts, as you
is necessary at some point             experience less effort to do much more.
sooner rather then later.
                                      It’s a matter of ‘I know we have most of what we
Which tool? Try NMock2
                                       need already and I need to search the repository
                                       for a few items.
from ThoughWorks. Ask
me to pair-program with
                                      We can deliver this new capability leveraging
                                       that much sooner now.
you to jump start this
                                      EXAMPLE: A complex cross-domain transactional
powerful technique.
                                       service (use case defined) which we have reuse on
                                       90% of.
NOTE: In our model, this
is the box called ‘Best
                                      The incremental 10% must be carefully
                                       considered so the net benefit is far greater then
Practices’ in the lower                the work would otherwise be.
half.
                                      In other words, almost all work (at least has the
                                       potential) to be strategic, and all effort should be
                                       considered in these terms, not ‘just get it done’
Task Services

                                       Task Services
This is an oversimplification
most likely, however these often           In many ways these can be though of as ‘use case’ driven as your
become the first ‘shared pattern
                                            use cases will start ignoring your existing system boundaries
                                            (otherwise why do all this!)
language’ words that are used in
the beginning                              Another way to think of this is as a ‘Controller’ however that is not
                                            recommended due to conflicts with patterns like MVC.
These are blatant rip-offs of the          Just getting use cases that ignore your boundaries will allow
Domain Driven world we will                 discovery of your services. This is typically a critical early driver
inhabit, and in fact, many                  of service definition from Business Analysts
decisions around these items are           They are the top level of the tree, and almost always call two or
made there.                                 more lower level services
                                           These are the simplest form of orchestration, can serve as the
The areas which differ                      transaction coordinator, and the injector of specific capabilities
significantly are when we need              into lower level services via configurations in the repository or
to do fundamental                           elsewhere
transformations due to a                   ]This is almost always decomposed much further using whatever
necessary Entity API that simply            makes sense for your enterprise
does not translate to a service            This also tends to link back to how you model your repository
(almost always because it is
from a vendor, as we have the              In short? These are very important (again depending on the
ability to avoid this)
                                            pattern language and various design decisions)
Entity Services


Now is a good time
                           Entity Services
to point out that we           This is NOT CRUD! Even without SaaS our work here is
are not addressing              fundamentally object oriented. SaaS is MOSTLY object
ANYTHING to do                  oriented but not to the same extent.
with the user                  Why? Services are very clear in their separation of
interface.                      Data and Process definition, unlike a class. However at
                                least this work is done via Interfaces instead of the
It is assumed that we           previous requirement to build separate XML Schema
can support just                definitions for contracts (more to come)
about anything
thrown at us.
                               We are not simply wrapping rows in a table (with some
                                exceptions where they happen to match – probably
                                due to over normalization)
                               By focusing on working out our Domain Driven Entity
                                API, we can now see why it is a precursor. Almost
                                without exception this will be leveraged by Entity
                                Services.
                            
Entity Services
                         Why not skip the Domain Driven API?
Almost without
exception today,             It turns out that solving those problems overlap
the ‘Best Practice’           extensively with the same problems (except cross-
used from the                 platform concerns for the most part)
service layer up             A Domain API is a ‘Best Practice’ for the code services
to the UI is the              execute to fulfill their contracts
Model View                   Often Entity Services are similar to the Entity Classes
Presenter Pattern
(to be discussed
                              (with a transformation into the Service Messaging
in detail) with               Requirements)
Dependency                   Most organizations will benefit immediately from the
Injection and                 Domain API so this is yet another way to
Inversion of                     Create the CRITIAL feedback loop
Control (again,                  Create the shared language between the Business and I.T.l
we will cover all
that later)                      Seamless fit the process of ‘delivery highly visible value in
                                  iterations as often as possible’.
                                 We gain immense value from the feedback of a ‘Pre-
                                  SaaS’ Entity design that will directly impact and improve
                                  SaaS work.
Entity Services

We will likely focus
                          For example: If you do not need
extensive energy           interoperability (at least not in the short
on the Domain              term but likely will add it later) in a use case
Driven API which           but do need maximum performance due to
will driven (mostly)       real-time concerns, you will want the option to
the Entity Services        leverage this Domain API.
Task Services come         Indeed this is THE SAME API that your services
when we have a             use, they are just a layer wrapping them
base, and utility          (basically)
services are often        In the real-world, no company always invokes
dynamically
injected
                           EVERY ASSET via SaaS or via a Domain API.
                           It’s always some point on a continuum. Rather
                           then ignore this, we embrace it!
Utility Services

                         We have many ‘cross-cutting’ areas which all services will need
All the stuff you
                             Security, Authentication, etc…
know you need to
do                           Logging
                             Audit Trail
Logging, Security,       Services dedicated to these areas can be called ‘Utility’ services
and any cross-            or ‘Common’ services
cutting
                         BEST PRACTICE: As will be demonstrated, we recommend
infrastructural           Injecting these dependencies using an Inversion of Control
concern would go          contain (like Castle Windsor)
here
                         This is a huge win as this is a standard practice in any Domain
It is assumed we          API development and even Object Oriented development
will leverage the        It is only recently with the advent of true OO APIs for SaaS that
best practice of an       we can use the best practices learned in that space and apply
Inversion of              them to the SaaS space. This is no accident, as vendors needed
Control container         to lower the bar and leverage the expertise developers already
using Dependency          had and let them apply it to SaaS.
Injection                This all used to be so much harder and less fun
Common Reactions….

   Can this all really be done?
       In short? ABSOLUTELY! Once things are as tangible as creating a
        class, Interface, etc. that our in-line with our standards and Pattern
        Language, it will likely become second nature.
           INCREMENTAL EVOLUTION
                many checkpoints that will reap rewards almost immediately
         CHANGING A CULTURE IS FAR HARDER THEN CHANGING TECHNOLOGY
         Although everyone is different there is now a clear evolution path set which
          very clear stages and checkpoints
         It’s rare the team that succeeds in the face of overwhelming information
          overload
     How are services ‘orchestrated’ by some coordinating entity? How
      can we involve the business analysts in defining these orchestrations?
     How are atomic (transactional) operations handled across
      fundamentally incompatible systems?
Common Reactions….

   How can a service possibly work with no change across ‘run-time’
    injected details like the actual method of sending?
       In short? Our pattern language and design standards which will dictate
        how to accomplish this with a little planning and the definition of common
        practices our services will share
   After we have made significant progress on the Domain Driven API
    Model (a step before we ‘jump in the deep end’ with SaaS), how
    do we evolve this to a SaaS model?
       It just so happens you are now ‘killing two birds’ by evolving this way.
        Again my previous comments discuss the possible downsides which we
        address via our standards and pattern language.
   Let’s say we reach a latter stage milestone such as completing work
    on our Domain API and we find we really do not need the
    incremental next steps that SaaS provides?
       That is more common then most think. It’s a business decision, not a
        technical one typically.
Common Reactions….

   What are the new skills as a developer I must learn to be effective
    in this area?
       Now? Surprisingly few… Not long ago the burden was rather daunting in
        many cases (WSE 3.0, XML Schemas, etc.)
   Exactly how are the messages you describe so different from the API
    calls we make today or the distributed component calls I have used
    before?
       This is one of the most important areas we will drill down on
   Can I really do work that is almost 100% business driven and ignore
    so much of the nasty details of services? This used to be far more of
    the work then any of the business logic!
       You’ll see (grin)
   How will my IDE (Visual Studio for example) help me work in this
    new paradigm? Will I have to use other tools as well? How will I
    even know I am building solutions that are in line with all this?
THANK YOU!

More Related Content

What's hot

An Introduction to SaaS and Cloud Computing
An Introduction toSaaS and Cloud ComputingAn Introduction toSaaS and Cloud Computing
An Introduction to SaaS and Cloud Computingelliando dias
 
SOA in banking issues and remedies
SOA in banking   issues and remediesSOA in banking   issues and remedies
SOA in banking issues and remediesDebajani Mohanty
 
Software As A Service (SaaS)
Software As A Service (SaaS)Software As A Service (SaaS)
Software As A Service (SaaS)Sharvan Salooja
 
Building a SaaS based product in Azure - Challenges and decisions made
Building a SaaS based product in Azure - Challenges and decisions madeBuilding a SaaS based product in Azure - Challenges and decisions made
Building a SaaS based product in Azure - Challenges and decisions madeBizTalk360
 
“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,Manik Singh
 
Azure Service Bus for Loosely-Coupled Enterprise Software.
Azure Service Bus for Loosely-Coupled Enterprise Software.Azure Service Bus for Loosely-Coupled Enterprise Software.
Azure Service Bus for Loosely-Coupled Enterprise Software.Chase Aucoin
 
Cloud computing jayanth
Cloud computing jayanthCloud computing jayanth
Cloud computing jayanthNihanth Charan
 
M.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.comM.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.comArun Somu Panneerselvam
 
System Center Datacenter Cloud Management Vision & Roadmap
System Center Datacenter Cloud Management Vision & RoadmapSystem Center Datacenter Cloud Management Vision & Roadmap
System Center Datacenter Cloud Management Vision & RoadmapAmit Gatenyo
 
The 15 ITIL Steps to DBaaS in the Cloud
The 15 ITIL Steps to DBaaS in the CloudThe 15 ITIL Steps to DBaaS in the Cloud
The 15 ITIL Steps to DBaaS in the CloudJoaquin Marques
 
Developing saas application in azure
Developing saas application in azureDeveloping saas application in azure
Developing saas application in azureVinod Wilson
 
How is az 303 different from az-304
How is az 303 different from az-304How is az 303 different from az-304
How is az 303 different from az-304ShivamSharma909
 
Video SaaS Overview
Video SaaS OverviewVideo SaaS Overview
Video SaaS OverviewJim Kaskade
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven ArchitectureChris Patterson
 
Crm at a glance
Crm at a glanceCrm at a glance
Crm at a glanceCRM Vision
 

What's hot (20)

An Introduction to SaaS and Cloud Computing
An Introduction toSaaS and Cloud ComputingAn Introduction toSaaS and Cloud Computing
An Introduction to SaaS and Cloud Computing
 
SOA in banking issues and remedies
SOA in banking   issues and remediesSOA in banking   issues and remedies
SOA in banking issues and remedies
 
SaaS Presentation
SaaS PresentationSaaS Presentation
SaaS Presentation
 
Software As A Service (SaaS)
Software As A Service (SaaS)Software As A Service (SaaS)
Software As A Service (SaaS)
 
Building a SaaS based product in Azure - Challenges and decisions made
Building a SaaS based product in Azure - Challenges and decisions madeBuilding a SaaS based product in Azure - Challenges and decisions made
Building a SaaS based product in Azure - Challenges and decisions made
 
“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,“Salesforce Multi-tenant architecture”,
“Salesforce Multi-tenant architecture”,
 
Azure Service Bus for Loosely-Coupled Enterprise Software.
Azure Service Bus for Loosely-Coupled Enterprise Software.Azure Service Bus for Loosely-Coupled Enterprise Software.
Azure Service Bus for Loosely-Coupled Enterprise Software.
 
Cloud computing jayanth
Cloud computing jayanthCloud computing jayanth
Cloud computing jayanth
 
M.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.comM.S. Dissertation in Salesforce on Force.com
M.S. Dissertation in Salesforce on Force.com
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Sap Traning Course Material
Sap Traning Course MaterialSap Traning Course Material
Sap Traning Course Material
 
Overview of SaaS
Overview of SaaSOverview of SaaS
Overview of SaaS
 
System Center Datacenter Cloud Management Vision & Roadmap
System Center Datacenter Cloud Management Vision & RoadmapSystem Center Datacenter Cloud Management Vision & Roadmap
System Center Datacenter Cloud Management Vision & Roadmap
 
what is SaaS?
what is SaaS?what is SaaS?
what is SaaS?
 
The 15 ITIL Steps to DBaaS in the Cloud
The 15 ITIL Steps to DBaaS in the CloudThe 15 ITIL Steps to DBaaS in the Cloud
The 15 ITIL Steps to DBaaS in the Cloud
 
Developing saas application in azure
Developing saas application in azureDeveloping saas application in azure
Developing saas application in azure
 
How is az 303 different from az-304
How is az 303 different from az-304How is az 303 different from az-304
How is az 303 different from az-304
 
Video SaaS Overview
Video SaaS OverviewVideo SaaS Overview
Video SaaS Overview
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
Crm at a glance
Crm at a glanceCrm at a glance
Crm at a glance
 

Similar to SaaS Pattern Language for Clear Communication

Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...
Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...
Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...AgileNetwork
 
Profitability: SaaS Versus On Premise Solutions
Profitability: SaaS Versus On Premise SolutionsProfitability: SaaS Versus On Premise Solutions
Profitability: SaaS Versus On Premise SolutionsAspire Systems
 
Qalcwise - Business Application Builder for non-programmers
Qalcwise - Business Application Builder for non-programmersQalcwise - Business Application Builder for non-programmers
Qalcwise - Business Application Builder for non-programmersqalcwise
 
Scio Saa S Readiness Evaluation Sre V1.0
Scio Saa S Readiness Evaluation Sre V1.0Scio Saa S Readiness Evaluation Sre V1.0
Scio Saa S Readiness Evaluation Sre V1.0ScioSales
 
Optimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesOptimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesEmbarcadero Technologies
 
Optimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesOptimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesMichael Findling
 
Blue mix overview
Blue mix overviewBlue mix overview
Blue mix overviewLeon Henry
 
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)Extreme Salesforce Data Volumes Webinar (with Speaker Notes)
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)Salesforce Developers
 
A 360 Degree View Of SaaS Integration
A 360 Degree View Of SaaS IntegrationA 360 Degree View Of SaaS Integration
A 360 Degree View Of SaaS IntegrationBoomi
 
Microsoft SQL Server 2008 Multi-Server Management
Microsoft SQL Server 2008 Multi-Server ManagementMicrosoft SQL Server 2008 Multi-Server Management
Microsoft SQL Server 2008 Multi-Server ManagementMark Ginnebaugh
 
How to Choose the Right Technology Stack for SaaS Development?.pdf
How to Choose the Right Technology Stack for SaaS Development?.pdfHow to Choose the Right Technology Stack for SaaS Development?.pdf
How to Choose the Right Technology Stack for SaaS Development?.pdfDark Bears
 
DBTA Case Study on Data Optimization | September 2008
DBTA Case Study on Data Optimization | September 2008DBTA Case Study on Data Optimization | September 2008
DBTA Case Study on Data Optimization | September 2008Embarcadero Technologies
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Dialexa
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationstreambase
 
Mind Mapping for Project Management
Mind Mapping for Project ManagementMind Mapping for Project Management
Mind Mapping for Project ManagementDavid Esko
 
Project Management Using Mind Maps
Project Management Using Mind MapsProject Management Using Mind Maps
Project Management Using Mind MapsDavid Esko
 

Similar to SaaS Pattern Language for Clear Communication (20)

Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...
Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...
Agile Gurugram Conference 2020 | Value of DevOps - Journey from Automation to...
 
Profitability: SaaS Versus On Premise Solutions
Profitability: SaaS Versus On Premise SolutionsProfitability: SaaS Versus On Premise Solutions
Profitability: SaaS Versus On Premise Solutions
 
Qalcwise - Business Application Builder for non-programmers
Qalcwise - Business Application Builder for non-programmersQalcwise - Business Application Builder for non-programmers
Qalcwise - Business Application Builder for non-programmers
 
Scio Saa S Readiness Evaluation Sre V1.0
Scio Saa S Readiness Evaluation Sre V1.0Scio Saa S Readiness Evaluation Sre V1.0
Scio Saa S Readiness Evaluation Sre V1.0
 
Optimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesOptimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero Technologies
 
Optimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero TechnologiesOptimizing Your Database Performance | Embarcadero Technologies
Optimizing Your Database Performance | Embarcadero Technologies
 
Blue mix overview
Blue mix overviewBlue mix overview
Blue mix overview
 
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)Extreme Salesforce Data Volumes Webinar (with Speaker Notes)
Extreme Salesforce Data Volumes Webinar (with Speaker Notes)
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
A 360 Degree View Of SaaS Integration
A 360 Degree View Of SaaS IntegrationA 360 Degree View Of SaaS Integration
A 360 Degree View Of SaaS Integration
 
Introducing the Development Director
Introducing the Development Director Introducing the Development Director
Introducing the Development Director
 
Microsoft SQL Server 2008 Multi-Server Management
Microsoft SQL Server 2008 Multi-Server ManagementMicrosoft SQL Server 2008 Multi-Server Management
Microsoft SQL Server 2008 Multi-Server Management
 
How to Choose the Right Technology Stack for SaaS Development?.pdf
How to Choose the Right Technology Stack for SaaS Development?.pdfHow to Choose the Right Technology Stack for SaaS Development?.pdf
How to Choose the Right Technology Stack for SaaS Development?.pdf
 
DBTA Case Study on Data Optimization | September 2008
DBTA Case Study on Data Optimization | September 2008DBTA Case Study on Data Optimization | September 2008
DBTA Case Study on Data Optimization | September 2008
 
SaaS Ecosystem - turn it on
SaaS Ecosystem - turn it onSaaS Ecosystem - turn it on
SaaS Ecosystem - turn it on
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
 
Jon Reed BPX Skills For ASUG
Jon Reed BPX Skills For ASUGJon Reed BPX Skills For ASUG
Jon Reed BPX Skills For ASUG
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
Mind Mapping for Project Management
Mind Mapping for Project ManagementMind Mapping for Project Management
Mind Mapping for Project Management
 
Project Management Using Mind Maps
Project Management Using Mind MapsProject Management Using Mind Maps
Project Management Using Mind Maps
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 

Recently uploaded (20)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 

SaaS Pattern Language for Clear Communication

  • 1. SOFTWARE AS A SERVICE – FIRST THINGS FIRST Damon Wilder Carr, CTO agilefactor ‘A pattern language approach to empowering stakeholder communications’
  • 2. Overview  The problem with so many TLAs An attempt to  Even the SaaS acronym is commonly thought to be eliminate the SOA. This is not necessarily true! Industry Fluff  The common sense bootstrap to SaaS while not being  Which is not so common….. overly high- level  A meta model view of the ‘Easy’  The ‘Blank Whiteboard’ view Concise  SaaS Expected Results statements on  A meta model view of the ‘hard’ what you should  The ‘Constrained yet Optimized’ Evolving State demand for SaaS business  Your Components have the GAC, what do your services have? driven value  The Combined Dimensions  Service Repository and Governance  Common Feedback and Concerns
  • 3. The problem with so many TLAs The ‘Buzz’ Factor  I am using SaaS on purpose  For some, SaaS means ‘external vendors who manage their services which and those who you integrate with yours’ like confusion  For others, it means a philosophical approach in how you view the role of software strategically and architecturally across all domains (this is the Why a lack of view I am proposing we use, not SOA as ‘Software as a Service’ is shared incredibly specific if we agree it is (grin) understanding is  Our industry suffers from severe ambiguity in the core areas that require clarity now (and has been) systemic to  Ask 10 technologists to define Service Oriented Architecture and you’ll likely get 10 different answers Software Engineering  This encompasses not just SOA but its constituent parts such as ‘Domain Driven Design’ (and there are some who would argue my statement that DDD is even a constituent. Why we need to  We have no ‘Webster's Dictionary’ that all have agreed to follow resolve this  Therefore we can only do this at our organization. This is the pattern internally language  Everyone ends up being very confused and ‘stick’  Before we can get stuck our goal is to avoid this predictable problem by proactively understanding it
  • 4. The common sense bootstrap to SaaS – Not so common actually A lesson from the  The largest impact for Design Patterns are not Gang of Four about code, UML Diagrams or technical A statement of details immediate goals  What then? related to a common  These are important but have less to do with why understanding this is so transformative to teams  It’s all about the words. A team that shares  They create succinct and unambiguous language a vision with the business for teams to reach increased bandwidth, stakeholders using however most technologist think in different terms A COMMON  In one phrase (or even word) you can create a language is definitive and concrete shared understanding of incredibly powerful a best practice for a very tangible item, across business domains, practice areas, etc.
  • 5. A Pattern Language as the Artifact of Shared Understanding To address the problems teams face in communication, we use the term ‘pattern language’ to describe our immediate evolving solution
  • 6. The common sense bootstrap to SaaS – Not so common actually In technical areas like  If this presentation had one point, this is it: SaaS that are ‘trendy’  We must create a clear and concise language and set of and often ill-defined, there are strong semantics (collectively called a Pattern Language) which motivatig factors for attack all ambiguity and clarity in this often cloudy area vendors, consultants, etc. to MAKE THIS  The TLA ‘SOA’ is practically useless now so I use SaaS MUCH HARDER THEN instead. Full definitions are of course key to this IT IS presentations and requested clarifications are expected Not so long ago it was very hard, but  Stakeholders in SaaS cannot execute ‘actionable’ steps now with the third- due to confusion on design, development, architecture, etc. generation offerings related to a clear pattern language FIRST. fully available SaaS is not nearly as  OUR IMMEDIATE TO DO: mystical.  Produce a ‘Pattern Language’ (with easily accessed But it is nearly references typically web based) for the SaaS space impossible with (leveraging others work as well as our own, which is always people/organizations evolving). confusing everyone with overloaded  We will achieve a level of immediacy and an elimination of definitons ambiguity in what we mean when we communicate across all levels of the enterprise (just like our services! – grin)
  • 7. A meta model of the concepts ‘Blank Whiteboard’ Unconstrained Drivers
  • 8. SaaS Expected Results On occasion SaaS is  Interoperate cross-platform in complex providing more then is workflows with little to no effort or concern  actually needed Key SaaS Differentiation (especially in a phased approach)  Dramatic End-State Reduction for Software ‘Overhead’ tasks  Most work becomes We all need to be clear exactly why all this strategic and benefits all systems effort is being done.  Empower enterprise to achieve astounding Almost all companies agility to address issues, large and small (with benefit but benefits are IT as a true strategic asset, never a cost ROI based center)  Ability to choose third-party technology based on ‘fitness to need’ rather then ‘constraints of exiting systems’
  • 9. SaaS Expected Results  Short term ROI is impacted by additional effort, with mid-long term ROI showing dramatic improvement  Typically the largest ROI for non-SaaS is the initial release of a new ‘application’ if it effectively solves the business need (in its limited scope)  With SaaS the concept of ‘Application’ is dramatically changed, and rather then a first release always providing the largest benefit, the ROI should increase for subsequent release as they (more then not) will address a far broader scope (more detail to come)
  • 10. SaaS Expected Results  Elimination of the ‘impedance mismatch’ between the business experts and the software professionals  CRITICAL POINT: The real provider of this benefit is now almost always a precursor to an SaaS imitative. This is a core enabler of SaaS (the Domain Driven Design with supporting ‘component’ API) - more to come.  This ‘Domain Driven Design’ precursor is now a given as the two predominant SaaS APIs are now (finally) native In addition to the other object-orientation and component lessons (WCF from areas, these should be Microsoft and SCA from a Java Consortium) – We will not in our thoughts as a get much into the implementation today I suspect good measure (when we  Remember that success in SaaS interactions is quite different then any traditional RPC or Distributed Object are uncertain) about Framework. Although the new APIs allowing seamless decisions. OO practices to build SaaS, remember this power can ‘empower you to fail’.  We will cover specifics on that topic in great detail in future discussions
  • 11. SaaS Expected Results SaaS is a  MEASURE: Most development – code even – process, not a single end-state becomes understandable by your most advanced business analysts (or we are probably doing The stages of something) – MUCH more to come evolution to ‘get to’ SaaS often  It is common to have a subgroup of the development provide many team focus more on the infrastructural issues and a of the same benefits as SaaS (typically larger) team to be far more business itself facing (but this is not always the case)  For example, the infrastructure team would develop a The maturity level of ‘when’ far deeper mastery of the enabling SaaS API typically to evolve to the when compared to the more ‘SaaS Composite Delivery’ final stage is team. This term is more accurate then ‘Application’ non-trivial and assumes a vast  As all core individuals driving solutions have created level of a (ring a bell?) COMMON PATTERN LANGUAGE it competencies becomes frictionless and all metrics are positively across many complex areas impacted
  • 12. SaaS Expected Results  While your systems are ‘individual’ and ‘autonomous’ Probably the as required, however they also are fully empowered least understood to engage in collaboration with any other service of the benefits and the most  Example: A third-party CRM system which has an entrenched role for the marketing department can confused seamlessly participate in complex messaging workflows across separate systems (regardless of platform) via Is absolutely service interfaces vital to SaaS  The finance department (which uses a Linux based internally success developed system running J2EE) would like to build predictive revenue models using the new algorithms created by the recent PhD hire out of Columbia.  These require detailed demographic information that only exists in the CRM system. In addition we must extend their proprietary browser interface (now showing its age) to not perform well but not expose the user to any service invocations. We must invoke services directly from the browser using Ajax (a first for this application) to provide acceptable performance
  • 13. SaaS Expected Results  All data must be real-time from ‘systems of record’  As real-time data is processed and becomes aged, it will be stored as Business Intelligence information in a SQL Server 2005 Analysis Services repository  We want to leverage existing service interfaces and implementations, with a key change: We want messaging to be asynchronous and sent via our MQ Series environment – This must leverage the same work but ‘inject’ the channel type via external configuration  Company executives will consume these as temporal graphs in their Executive Portal – SharePoint 2007 MOSS’. Also, key performance indicators which are derived from this OLAP repository are calculated for monitoring status  Here we have Asynchronous queued communication, real-time high performance messaging and coordination
  • 14. A meta model of the concepts – Real World Concerns
  • 16. Your Components have the GAC, what do your services have? For those who succeed  Service Repository with SaaS, their success  Versioning is critical, and multiple contracts (same can quickly become their downfall. idea as a .NET component version which is strongly signed) running concurrently is very common Why? They number of services are  This is a logical organization (usually top down) for unmanageable, cataloging, finding and consuming your service assets undiscoverable, and as well as much more (to be continued) dependencies break left and right. In short?  The number of services should explode over time, as everything becomes a part in the larger whole. It’s precisely the same issues we had in COM, Without a repository you will find yourself unable to and that the GAC use the SaaS Paradigm (by your very success in it!) addresses (side by side versioning for example  If consumers cannot find what they need quickly and is a critical capability in logically, the very core reasons for having services SaaS) will often spin out of control.
  • 17. Service Repository and Governance  “Development organizations have found they must evolve new compliance and incentive systems to ensure their SOAs are built on stable foundations.”  “Without governance, unfettered ad-hoc development of services threatens to undermine the promised benefits of SOA, such as improved productivity through service reuse and better alignment with the business.”  “Instead, SOA initiatives may lead organizations in a backwards direction, pouring development dollars into a black hole. “ ‘Weak governance haunts SOAs’, David Longworth http://www.looselycoupled.com/stories/2005/gov-dev0606.html Also See: www.looselycoupled.com/opinion/2006/stanek-gov0517.html
  • 18. Service Repository and Governance Does that previous quote  Service Repository sounds familiar? It sure  This is precisely what has killed most Object Oriented does to me! reuse initiatives Due to (I am guessing)  In spite of this rich history of failure, many are the few companies who repeating it with reckless abandon have reached this level of maturity now, this is  It’s far better to ‘just get something running’ as your a subject that is repository (say the UDDI Service in Windows 2003) amazingly glossed over and evolve as required, as UDDI is the backbone of far too often almost all candidate repositories. What is an example?  UDDI is now at Version 3.0 which Microsoft does not yet UDDI is the most support common (a free service  NOTE: When we have this problem we will not only in Windows 2003) and be prepared, it will be a very nice indication of our available (for years success now) right is Visual Studio.
  • 19. Service Composition Strategy Guidance  Service Composition as a Rule, not an Exception  Most of the time you will combine services into composite solutions  It will matter little to you the technical details about the services (such as platform, API, etc) as your interaction will likely be purely as ‘just a set of class instances and types’  A dedicated discussion will likely follow on just this point, especially around  Composite Security Contexts, Credentials, Single Sign-On, Authentication, etc.  Inter-Service Transactional Scope  Inter-Server Workflow/Orchestration (especially now with easy to use GUI tools)
  • 20. Service Composition Strategy Guidance  To succeed in SaaS you cannot avoid spending a lot of time For a real composing services measure of SaaS  What are some guiding principles around this? success, just see  Service Characteristics that Help you Decide how much you  How much can a service be reused? If not a lot is there a better are composing design or further decomposition to get more reuse – a constant rather then question to ask yourself in SaaS. building new  What is the type of logic that the service primarily performs? Just like objects and the single responsibility rule, this loosely holds for your services. lowest level services (as will be briefly discussed)  Another view of reuse is ‘How could this service possible be used As services are across other areas we are not thinking of’? built and your  Every bit of effort becomes driven by these kind of thoughts, as your benefit soon becomes far less effort to do very hard tasks. It’s a matter of repository grows ‘I know we have most of what we need already, I need to search the this should repository for a few items, but we can deliver this new capability soon. In fact, this could also be leveraged by our marketing department as they dominate your have a use case defined which we will end up covering 90% of. We will development extend this to cover 100% and kill 2 birds.  Hey, I just realized with these changes, this can become a service we can efforts use in three more areas! We just freed up 20 hours of planned work!
  • 21. Drivers for the ‘Three Service Composition’ categories This work happens  To succeed in SaaS you cannot avoid during your creation of spending a lot of time composing services the Domain Driven API which is a necessary  What are some guiding principles around precursor to full SaaS this? (they actually happen in  Service Characteristics that Help you Decide parallel typically, with  How much can a service be reused? If not a lot shifting focuses) is there a better design or further decomposition Remember these all to get more reuse – a constant question to ask evolve via Agile yourself in SaaS. iterations, a lot of  What is the type of logic that the service feedback from the users, primarily performs? Just like objects and the and quality checkpoints single responsibility rule, this loosely holds for on all code via tangible your lowest level services (as will be briefly items like Continuous discussed) Integration
  • 22. Drivers for the ‘Three Service Composition’ categories  Another view of reuse is ‘How could this service Want to start now on possibly be used across other areas we are not something? Know that a thinking of’? Mock Testing Framework  Most effort is driven by these thoughts, as you is necessary at some point experience less effort to do much more. sooner rather then later.  It’s a matter of ‘I know we have most of what we Which tool? Try NMock2 need already and I need to search the repository for a few items. from ThoughWorks. Ask me to pair-program with  We can deliver this new capability leveraging that much sooner now. you to jump start this  EXAMPLE: A complex cross-domain transactional powerful technique. service (use case defined) which we have reuse on 90% of. NOTE: In our model, this is the box called ‘Best  The incremental 10% must be carefully considered so the net benefit is far greater then Practices’ in the lower the work would otherwise be. half.  In other words, almost all work (at least has the potential) to be strategic, and all effort should be considered in these terms, not ‘just get it done’
  • 23. Task Services  Task Services This is an oversimplification most likely, however these often  In many ways these can be though of as ‘use case’ driven as your become the first ‘shared pattern use cases will start ignoring your existing system boundaries (otherwise why do all this!) language’ words that are used in the beginning  Another way to think of this is as a ‘Controller’ however that is not recommended due to conflicts with patterns like MVC. These are blatant rip-offs of the  Just getting use cases that ignore your boundaries will allow Domain Driven world we will discovery of your services. This is typically a critical early driver inhabit, and in fact, many of service definition from Business Analysts decisions around these items are  They are the top level of the tree, and almost always call two or made there. more lower level services  These are the simplest form of orchestration, can serve as the The areas which differ transaction coordinator, and the injector of specific capabilities significantly are when we need into lower level services via configurations in the repository or to do fundamental elsewhere transformations due to a  ]This is almost always decomposed much further using whatever necessary Entity API that simply makes sense for your enterprise does not translate to a service  This also tends to link back to how you model your repository (almost always because it is from a vendor, as we have the  In short? These are very important (again depending on the ability to avoid this) pattern language and various design decisions)
  • 24. Entity Services Now is a good time  Entity Services to point out that we  This is NOT CRUD! Even without SaaS our work here is are not addressing fundamentally object oriented. SaaS is MOSTLY object ANYTHING to do oriented but not to the same extent. with the user  Why? Services are very clear in their separation of interface. Data and Process definition, unlike a class. However at least this work is done via Interfaces instead of the It is assumed that we previous requirement to build separate XML Schema can support just definitions for contracts (more to come) about anything thrown at us.  We are not simply wrapping rows in a table (with some exceptions where they happen to match – probably due to over normalization)  By focusing on working out our Domain Driven Entity API, we can now see why it is a precursor. Almost without exception this will be leveraged by Entity Services. 
  • 25. Entity Services  Why not skip the Domain Driven API? Almost without exception today,  It turns out that solving those problems overlap the ‘Best Practice’ extensively with the same problems (except cross- used from the platform concerns for the most part) service layer up  A Domain API is a ‘Best Practice’ for the code services to the UI is the execute to fulfill their contracts Model View  Often Entity Services are similar to the Entity Classes Presenter Pattern (to be discussed (with a transformation into the Service Messaging in detail) with Requirements) Dependency  Most organizations will benefit immediately from the Injection and Domain API so this is yet another way to Inversion of  Create the CRITIAL feedback loop Control (again,  Create the shared language between the Business and I.T.l we will cover all that later)  Seamless fit the process of ‘delivery highly visible value in iterations as often as possible’.  We gain immense value from the feedback of a ‘Pre- SaaS’ Entity design that will directly impact and improve SaaS work.
  • 26. Entity Services We will likely focus  For example: If you do not need extensive energy interoperability (at least not in the short on the Domain term but likely will add it later) in a use case Driven API which but do need maximum performance due to will driven (mostly) real-time concerns, you will want the option to the Entity Services leverage this Domain API. Task Services come  Indeed this is THE SAME API that your services when we have a use, they are just a layer wrapping them base, and utility (basically) services are often  In the real-world, no company always invokes dynamically injected EVERY ASSET via SaaS or via a Domain API. It’s always some point on a continuum. Rather then ignore this, we embrace it!
  • 27. Utility Services  We have many ‘cross-cutting’ areas which all services will need All the stuff you  Security, Authentication, etc… know you need to do  Logging  Audit Trail Logging, Security,  Services dedicated to these areas can be called ‘Utility’ services and any cross- or ‘Common’ services cutting  BEST PRACTICE: As will be demonstrated, we recommend infrastructural Injecting these dependencies using an Inversion of Control concern would go contain (like Castle Windsor) here  This is a huge win as this is a standard practice in any Domain It is assumed we API development and even Object Oriented development will leverage the  It is only recently with the advent of true OO APIs for SaaS that best practice of an we can use the best practices learned in that space and apply Inversion of them to the SaaS space. This is no accident, as vendors needed Control container to lower the bar and leverage the expertise developers already using Dependency had and let them apply it to SaaS. Injection  This all used to be so much harder and less fun
  • 28. Common Reactions….  Can this all really be done?  In short? ABSOLUTELY! Once things are as tangible as creating a class, Interface, etc. that our in-line with our standards and Pattern Language, it will likely become second nature.  INCREMENTAL EVOLUTION  many checkpoints that will reap rewards almost immediately  CHANGING A CULTURE IS FAR HARDER THEN CHANGING TECHNOLOGY  Although everyone is different there is now a clear evolution path set which very clear stages and checkpoints  It’s rare the team that succeeds in the face of overwhelming information overload  How are services ‘orchestrated’ by some coordinating entity? How can we involve the business analysts in defining these orchestrations?  How are atomic (transactional) operations handled across fundamentally incompatible systems?
  • 29. Common Reactions….  How can a service possibly work with no change across ‘run-time’ injected details like the actual method of sending?  In short? Our pattern language and design standards which will dictate how to accomplish this with a little planning and the definition of common practices our services will share  After we have made significant progress on the Domain Driven API Model (a step before we ‘jump in the deep end’ with SaaS), how do we evolve this to a SaaS model?  It just so happens you are now ‘killing two birds’ by evolving this way. Again my previous comments discuss the possible downsides which we address via our standards and pattern language.  Let’s say we reach a latter stage milestone such as completing work on our Domain API and we find we really do not need the incremental next steps that SaaS provides?  That is more common then most think. It’s a business decision, not a technical one typically.
  • 30. Common Reactions….  What are the new skills as a developer I must learn to be effective in this area?  Now? Surprisingly few… Not long ago the burden was rather daunting in many cases (WSE 3.0, XML Schemas, etc.)  Exactly how are the messages you describe so different from the API calls we make today or the distributed component calls I have used before?  This is one of the most important areas we will drill down on  Can I really do work that is almost 100% business driven and ignore so much of the nasty details of services? This used to be far more of the work then any of the business logic!  You’ll see (grin)  How will my IDE (Visual Studio for example) help me work in this new paradigm? Will I have to use other tools as well? How will I even know I am building solutions that are in line with all this?