Over a million developers have joined DZone.

SOA Portfolio Checklist

DZone's Guide to

SOA Portfolio Checklist

· Java Zone
Free Resource

Microservices! They are everywhere, or at least, the term is. When should you use a microservice architecture? What factors should be considered when making that decision? Do the benefits outweigh the costs? Why is everyone so excited about them, anyway?  Brought to you in partnership with IBM.

You may have invested significant time and effort creating services.  Have you reached maximum service agility, adaptability, adoption? Are applications now easier to build? Is it time for a SOA portfolio review?

SOA portfolio review objectives include determining if the service design methodology, service contract boundaries, and service coupling minimize portfolio redundancy and duplication while maximizing adoption. Discrete tasks may evaluate:

  1. Service contract boundaries and resultant impact on consumption and orchestration.
  2. Coupling between service design, service description, proxy/stub code, and core business logic code to determine expected agility, development cost, and maintenance burden.
  3. Service design guidelines, service contract definition and associated policies
  4. Expected service consumption and orchestration.
  5. Process used by developers to discover, gain access, evaluate, and integrate portfolio services.
  6. How the team builds and deploys artifacts and how the team develops services.
The review should determine:

  1. Does the design allow for the accomplishing key goals such as: modularity, configurability, and flexibility. This should lead to consideration of principles like loose coupling, abstraction, granularity, interoperability, and separation of concerns.
  2. Can service consumers readily discover relevant services, and can consumers easily understand how the service matches their functional and non-functional requirements
  3. How can service design, service development guidelines, service governance, service management, and service storefronts increase service adoption and minimize redundancy

Client deliverables into the evaluation process may include:

Design Models

  • Any existing high-level uses cases,  requirements, and descriptions for planned and existing service interfaces and service deployments
  • Business process and business capability models
  • Service models and interface descriptions
  • Review code artifacts and Maven artifacts generated during the implementation

Development governance practices (i.e. application, integration, services)

  • Service design guidelines
  • Development tooling and frameworks
  • Service implementation process, code artifacts, and Maven artifacts.

Service integration, deployment and release engineering guidelines (i.e. administration, monitoring, solution provisioning, API key management, security integration)

Run-time policy requirements and enforcement mechanisms

  • Security policies (i.e. application, integration)
  • Service level agreements
  • Organizational structure (i.e.  IT departments, competency centers, team roles and responsibilities)

Service Portfolio Map

  • Applications / Projects
  • Services / API
  • Business capabilities and business domain
  • Usage
  • Cost

SOA Portfolio Review recommendations should span the following workstreams:

  • Strategy
  • Governance
  • Service Models
  • Standards
  • Development processes
  • Organizational dynamics

Discover how the Watson team is further developing SDKs in Java, Node.js, Python, iOS, and Android to access these services and make programming easy. Brought to you in partnership with IBM.


Published at DZone with permission of Chris Haddad, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}