RESTful APIs are also SOA
Oracle SOA Governance 11g Implementation Officially Released!!
http://www.packtpub.com/oracle-soa-governance-11g-implementation/book
Video:
Other Video Interviews:
http://www.youtube.com/watch?v=rLFTB0nKxg8
Lack of effective Governance is the single most common reason why organisations fail to successfully implement Service Oriented Architectures (SOA). Misalignment with business strategies, poor reference architectures, low quality designs and code, lack of service reuse and visibility over service operational metrics are just a few of the many reasons why SOA implementations fail.
In today’s technological landscape where the internet and I.T. can drive the success of a business, organisations must ensure that technology and business objectives are fully aligned and delivering the same goals.
Service Oriented Architecture (SOA) is an architectural style created specifically to address today’s fast paced technological challenges. When implemented properly, SOA can deliver future-proofed, flexible I.T solutions that are well suited to underpin the I.T. landscape of organisations today.
Oracle SOA Governance 11g Implementation illustrates how to successfully implement SOA Governance in your Organisation. To achieve this the book describes how goals and objectives need to be clearly captured and used to align Governance processes with Governance tools, Governance tools with people, and people with the different roles and responsibilities that are required to implement effective governance.
This book describes, by example, how to implement the Oracle SOA Governance suite of products in order to deliver design-time and runtime governance, with the aim being to deliver an effective and agile IT landscape that fully supports key business processes.
The book begins by giving the reader a short but concise overview of SOA Governance and outlines its mains goals and objectives. Issues discussed include the key SOA governance challenges faced by organizations, how a SOA Maturity Assessment can be used to identify the key Governance challenges and how to align projects to deliver Design-time and runtime governance.
The book then presents a Case Study that is based on real world SOA governance implementations from the authors and shows how SOA Governance, when done right, delivers many benefits to the organization.
The book shows how to implement each of the Products contained in the Oracle SOA Governance Suite to address specific design-time and runtime Governance challenges, all set in the context of the Case Study.
Main features available:
- Understanding SOA Governance, its key concepts, goals and objectives and how to implement these using the Oracle SOA Governance Suite.
- Execute a SOA Maturity Assessment in order to capture the SOA Governance challenges specific to your organization.
- Implement Oracle Enterprise Repository (OER) and Oracle Service Registry (OSR) to address your organisation’s SOA Governance Design-time and Runtime requirements.
- Implement Runtime Governance using Oracle Web Service Manager (WSM) security policies and by leveraging Oracle Enterprise Manager’s (OEM) key management features.
- Achieve close-loop governance by feeding OER with runtime operational metrics and enforcing service reuse in OER.
- Accelerate governance and also MDM adoption by implementing AIA 11g Foundation Pack.
What will you learn?
- How to define the key goals and objectives for SOA governance and how to assess the current SOA maturity level within your organisation.
- The key challenges that are faced by organizations prior to implementing SOA Governance and what benefits are realised after a successful implementation.
- The Oracle Enterprise Repository product architecture, its key features, components and constraints.
- How to create and configure OER users with suitable role based access control. How to create Compliance Templates using the Asset Editor and search for Assets in the OER console.
- How to define the most appropriate bootstrap strategy in order to harvest your existing assets into OER and how OER provides a single source of truth for all enterprise assets promoting service reuse. Categorize Assets in accordance with your organizations requirements, create missing Asset Types using the Type Manager, manually submit Assets and model Assets relationships using the Asset Editor.
- Make use of OER IDE plugins, OER policies and OER registration workflows to enforce quality gates and Governance policies.
- The Oracle Service Registry product architecture, its key features, components and constraints and how to deploy it and use it effectively with OER.
- Promote services between different environments using the OER and OSR integration capabilities and expose available services to both internal and external parties.
- Implement basic runtime Governance with Web Service Manager and Oracle Enterprise Manager.
- Enhance Runtime Governance by integrating OER with Business Transaction Manager and Oracle Enterprise Manager Grid Control.
- Govern Oracle Architecture Integrations Architecture (AIA) with OER and the AIA Solution Pack and AIA Harvester.
- OER and OSR installations tips.
Analytical Point of View on Technology Trends
My Summary of Oracle Open World 2013
Team USA Oracle won the America's Cup |
I was trying out Oracle Enterprise Data Quality (EDQ) |
1- First section Media Interactions, summarizes the series of interviews I had with magazines and also with Oracle.
2- In the second section, Sessions & Key Notes. I provide key notes from the sessions I was able to attend, details about my own presentation and also some relevant links.
3- The last section, Social Events, my highlights from the social events I attended.
(You can skip to a section by clicking on the links)
This first article focuses more on general IT strategies around Fusion which I am responsible for defining at HCL. Caroline wanted to know HCL’s approach towards delivering business solutions that embrace new trends and how our end-to-end offerings built around the Fusion stack could help customer achieve business benefits:
http://itknowledgeexchange.techtarget.com/soa-talk/oracle-open-world-speaker-luis-weir-focuses-on-what-matters-the-customer/
The following article is about the controversial topic of HTML 5 vs Native OS apps for mobile apps development. She asked me a few questions on this and I was quoted a few times:
http://searchsoa.techtarget.com/feature/Mobile-developers-agree-HTML5-and-JavaScript-apps-fall-short
http://www.soa4u.co.uk/2013/10/analytical-point-of-view-on-technology.html
Full presentation: http://medianetwork.oracle.com/video/player/2687033686001
![]() |
OFM Conceptual Architecture Presented by Thomas Kurian |
- ADF Mobile: Build once deployed in multiple platforms. This is actually much needed (read this article on the topic to which I contributed http://tinyurl.com/html5vsnative)
- SOA Suite:
- New Cloud Adapters, including one for SFDC
- Mobile enablement: Support for REST and JSON adapters. This is great News as the existing HTTP adapter falls short and having to write Java in OSB to support this is also not ideal. API Gateway supports this feature so there is a slight overlap. This features also confirms my argument that REST is also SOA (read my post http://tinyurl.com/restissoa)
- Superfast platform up to 20 times faster in Exalogic
- Lighter footprint: This is good news as Weblogic is a bit too heavy to run especially when compared with its predecessor OAS
- ODI: New low based ETL. More intuitive for developer and more prescriptive. Support for Oracle DB 12c.
- Webcenter:
- Mobile Support: Mobile portals, Mobile Site Management and apps for content management.
- Business User: Streamlined portal builder, external content intergation
- Cloud services: document sharing team workspaces, integration with on-premise content
- Identity Management:
- Single Sign-On for mobile apps
- Robe based access control and management support for devices and mobile.
- Identity for Hybrid Enteprrise: SaaS, partner and on-premise support.
- Overall strategy: Focus on a modern UI and user experience based on a common platform
- Core Fusion tenants: Standards based solutions (i.e. Java & ADF, HTML5, security, etc), strong focus on user experience and extensibility.
- Oracle Public Cloud covers 3 main: Application Services, Social Services and Platform Services, all underpinned by Oracle’s Common Infrastructure Services
- Key differentiator for Oracle Public Cloud: Support for native Java language to create/customise Cloud services. This instead of the high level and restricted languages created by other cloud vendors.
- Oracle has spent more than $27 billion since 2005 in R & D. Only in 2013 it spent $4.8 billion.
- Oracle cloud existing user base facts: 21 million users, 10k companies in 180 countries supporting 34 languages.
- Mobile: Oracle Fusion Tap. Excellent app and like the demo. I like the way the demo put social media into the context of apps and actual business processes.
- Video Share feature on Fusion Tab for ad-hoc video sharing in enterprises. Seemed also an excellent feature. I think there is currently a gap in the market for enterprise focused youtube like cloud apps.
- It was mentioned that Talent Management is priority #1 at C-level. I did some research of this and it didn’t seem clear to me this is the case. However it was evident that it is at least in the top 5 of priorities.
- In a survey made to ERP customers, 74% said that they wish to transform their ERP solution and 48% said that their ERP systems are out-dated. I think this is a really powerful –eye opener insight.
- Final take away get ready for Fusion adoption by defining a strategy and roadmap for the future, then defining a solution suitable to address business goals and that reduce complexity and increase automation all leading to achieving operational efficiencies. Something obvious I would say however given the amount of customers without dated ERPs seems like a good point to highlight.
In fact because the session was turning into a SFDC integration discussion and many of us were not happy on the fact that there isn’t yet anything out of the box to integrate, Vikas Anand anticipated an announcement and informed everyone that a Cloud Adapter including a Sales Force adapter was developed and would be available as a patchset of SOA Suite on top of PS6.
In the presentation I discussed the benefits of adopting Fusion when it comes to exploiting new trends such as cloud, mobile, social media and big data. Later in the presentation I described a Fusion Reference Architecture for Fusion that depicted not only Apps but also the key Fusion Middleware components such as BPM Suite, SOA Suite, ODI, Webcenter, IDM Suite, and others. My colleague from the US and Fusion HCM expert Vamsi Reddy, joined me at the end of the to talk about one of our Fusion success stories in which he played a key role.
If you want a copy of the presentation, drop me an email to luis.weir@hcl.com and I can send it.
Here's the full presentation:
- Oracle Cloud Marketplace: A portal to browse, try and buy business applications developed by Oracle partners
- 3 big announcements on Oracle Cloud (http:cloud.oracle.com)
- Oracle Database Cloud Service: supports 11g or 12c, single node or RAC and support for data guard. A 3 tier service:
- Basic (pre-configured and automatic install, managed by customer)
- Managed (fully managed by oracle)
- Maximum Availability (fully managed by Oracle with maximum availability)
- Java as a Service: Basically a dedicated Weblogic server on which java apps can be developed fully in the cloud. Similar 3 tiers as: basic, managed and maximum availability.
- Infrastructure as a Service: Not a new service however it now supports:
- Storage service
- Compute Service (for example to deploy app servers to develop apps in languages such as C++, Ruby, and others). Fully isolated environment.
- Others coming: Single Sign-On, and In-memory cache.
Full Presentation: http://medianetwork.oracle.com/video/player/2690987615001
![]() |
Internet of Things |
- IoT = Internet of Things. Basically devices interconnected and that constantly data. The key thing about this concept is that this can be applied to any device. From day to day items like watches, shoes, anything, to industry such as logistics to improved supply and demand and transformation. It really is a mind blowing concept.
- Expected that by 2020 98% of growth in IT will come from platforms in support of mobile devices and mobile apps.
- Exponential growth expected in coming years in Machine to Machine (M2M) based integration. Consists of 3 stages:
- M2M consists of 3 stages:
- Acquire and transmit data: It was described how Java for embedded devices can be used for this. Because so many people in the world already knows java, no new skills are needed.
- Integrate and secure: This is where Oracle Fusion Middleware adds value as Service Bus, SOA Suite, OEP, IDM Suite can be used in support of integrating and securing data coming from devices.
- Analyse and act: Basically use of Big Data technologies to exploit the massive amount of data generated by trillions of devices.
- At the end of the event, some of the winners of the America’s Cup came to the stage to talk about how they win and how they managed to pulled it off. I recall Ian “fresh” Burns (Head of Performance for team Oracle) saying when responding to a questions “we won not only because of the software we had but mainly because of the people and the way we managed to work together as a team”. That for me was a killer phrase. That for me is the true meaning of Governance: tools, people and processes working together.
Lots of Food!! |
Customer Advisory Board (CAB) and CAB Reception (Friday 11th)
The after-even dinner was held at Tres (http://tressf.com/). The food was so good that I could not stop eating. Overall I really enjoyed the event and really had a chance to spend some quality time talking with other geeks like me and talk about technology details that I can’t talk about with many people.
For me the best part of the event was being introduced to the owner of the Tres restaurant; Dave Stanton. As Tim Hall said when he introduced me to him: “Luis, this is Dave, the father of web services”. That was quite a moment, and certainly wasn’t expecting it. It happens that Dave is an entrepreneur as not only he’s the owner of Tres, but also founder of Force by Design, a service company that helps customers adopt cloud services such as Sales Force.
And that's all! hope you enjoyed my post!
Oracle SOA Governance for the Business
I hope you enjoy it!
9 Tips for Organizational Maturity in SOA
http://tinyurl.com/SOAPGPart1
http://tinyurl.com/SOAPGPart2
http://tinyurl.com/SOAPGPart3
http://www.opengroup.org/soa/source-book/gov/intro.htm
http://www.packtpub.com/oracle-soa-governance-11g-implementation/book
Roles in SOA |
SOA Technical Working Group |
There is no better way to articulate this than the following image extracted from the following TOGAF page: http://pubs.opengroup.org/architecture/togaf9-doc/arch/chap22.html
Open Group - Governance |
Scrum Cheat Sheet |
http://martinfowler.com/articles/agileOffshore.html
http://www.ademiller.com/blogs/tech/2008/08/agile-2008-distributed-agile/
https://www.atlassian.com/software/jira
Gartner Magic Quadrant for Application Management Tools |
----------------------------------------------------------
----------------------------------------------------------
Blog by Luis Weir proofread by Jordan Campbell.
AIA Foundation Pack Architecture Overview
Design-time Artifacts
Runtime Artifacts
- Support for other technologies such as Oracle Data Integrator (ODI) and Oracle B2B
- Support for the main types of faults, such as system, remote, and business faults
- Configurable error notifications
- Integration with Human Workflow using the SOA/BPM Suite Worklist Application
- AIA specific error logger
For more information on AIA Foundation Pack you may refer to my book "Oracle SOA Governance 11g Implementation" which includes a chapter fully dedicated to this topic and includes a sample use case based on real live experience. Book is available in the following link or any other major book store.
http://www.packtpub.com/oracle-soa-governance-11g-implementation/book
SOA Governance FAQ
For technical communities, SOA Governance is usually seen as a discipline that defines the processes, the roles and responsibilities and the tools needed to successfully implement a sound SOA solution.
2. What SOA Governance isn’t?
3. Why is SOA Governance needed?
Problem | Consequence to the Business |
Lack of visibility over existing assets and its performance | Minimum asset reuse and duplication introducing extra costs (both in CAPEX and OPEX). Without a level of analytics it is not possible to determine ROI. |
TacticalProjects over of Strategic Solutions | Projects have their own agendas which deliver short term benefits to the project but that add no long or mid term Enterprise value. |
Poor decision making and Lack of accountability | No sense of ownership makes decision making, policy enforcement and accountability an impossible task. |
Low quality of Assets which become difficult to maintain and change. | Higher complexity and cost of change introduces Risks to the Business preventing new and innovative solutions to be introduced. |
Poor estimation techniques and inaccurate planning | Projects cost more than estimated mainly because of “unknowns”... (i.e. Rework, extra activities and deliverables, dependencies, complexity, and others) |
4. What are the objectives of SOA Governance?
5. What are the key components of SOA Governance?
6. What are the top challenges that prevent successful SOA Governance implementation?
7. What are the most common mistakes organizations make when implementing SOA Governance?
8. What Oracle tools do I need to successfully implement SOA Governance?
9. To what degree does successful SOA governance require organizational change?
10. What impact, if any, trends such as Cloud, API development, Mobile Computing, Big Data, and the Internet of Things( IoT) have on SOA Governance?
Moreover, all of these emerging technologies relay on Application Programming Interfaces (APIs) either to make their data available to other systems and/or apps or to consume data from other systems. Although initially the API movement evolved somehow independently of SOA architectures, APIs eventually evolved to become an integral part of SOA. This is because many of the problems that APIs were designed to solve are actually shared by SOA (i.e. support for a diverse of technologies and open standards, support for componentization and abstraction, deliver flexibility and promote reuse, etc). Even the tools use to create, monitor and managed API are the same or very similar to the tools used when implementing more traditional SOA architectures.
11. Are there any practical books on how to implement SOA Governance?
SOA Transformation through SOA Upgrade
Much has been said about Oracle SOA Suite 10g (or JCaps) upgrades to 11g and how features map between both versions. There is also plenty of information online about this topic both official and unofficial. It’s not news to many that for example SOA Suite 10g is currently in extended support and product will enter sustaining support by the end of 2014 (I will explain more about what extended and sustaining support means later in the blog). However one fact remains truth: There are still many companies out there running platforms that are (or soon will be) in sustaining support, and that don’t yet have an upgrade strategy. I say this based on my own experience as I am currently helping several customers do exactly this.
Having said that, I wrote this blog in an attempt to give SOA experts, Integration Leads and Architects key pointers that can serve as inspiration to come up with a transformational approach when defining an upgrade strategy. Note that I am using the word “transformation” deliberately and I will explain why shortly.
Note that although this article is mainly related to the Oracle SOA 10g to 11g technology stacks, the approaches, tips and information provided in this blog should also be applicable when defining any technology upgrade. In fact, once 12c is more mature I will probably refresh this blog to cover 11g to 12c upgrades.
Following my key pointers to help you define your upgrade as a SOA Transformation:
1) Understand the product roadmaps and planning to move in advance
2) Take a SOA Transformation approach and not just a technology upgrade
3) Elaborate a SOA Transformation Roadmap
4) Understand current and future technology stacks and identify potential risks and challenges in advance
5) Define a service transformation methodology
6) SOA transformation also requires organisational changes and maturity
1)Understand the product roadmaps and planning to move in advance
This is one of the most important points and one that many have either failed to understand or have just ignored (hence why many companies still stuck in 10g and have no plan to upgrade yet). This is important because by understanding the product releases and features, release dates, and support lifeline you can plan in advance an upgrade approach and avoid having to do something tactically, in a rush and with limited budget.
Before getting further into this topic, it is critical that you understand the basics of Oracle product releases:
- Oracle product releases: There are two main points that you need to be aware of when talking about releases: Major release and patch set release (also referred to as component release). Let’s take for example Oracle SOA Suite 11gPS6 which is the same as saying 11.1.1.7
- Oracle talks about product versions in two different ways: 1) Product release name (i.e. 11gPS6) , 2) Product release number (11.1.1.7.x). Either can be used to refer to a specific product release, however I prefer the release number as it gives more detail.
- 11 is the major release. so for example 10g to 11g actually means major release 10 to major release 11. A major release means that there is a significant change in technology platform. It usually also means that you can’t simply apply a patch but rather requires more planning and preparation as it might require having to install and configure separate infrastructure and more elaborated service/code migration
- The “g” is for “grid”. This is more of a commercial/marketing thing. For example in version 12, it’s 12c where “c” is for cloud
- PS standards for patch set. A patch set is a single patch that contains a series of patches. In the example discussed PS6 standards for patch set six
- For details on how to read the product release number refer to: http://docs.oracle.com/cd/E28280_01/core.1111/e10105/release.htm
- Oracle patching and upgrade terminology: Oracle has specific definitions for what patching, migration and upgrade means. Patching is basically applying a patch to an existing installation. Migration is moving code from a third party product to an Oracle product. Upgrade means moving from one major version to another (i.e. 10g to 11g, or 11g to 12c). For more info on this refer to following link:
- Oracle Installation, Patching, and Upgrade Terminology: http://docs.oracle.com/cd/E28280_01/doc.1111/e16793/overview.htm
- Oracle support stages: There are 3 support stages:
1) Premier Support: This is where you want and should target to be as full support will be provided in terms of patching, security fixes, better product certification with other products and less obvious but important there will be more people skilled in support teams to deal with products in this stage
2) Extended Support: Pretty much the same as premier support apart from the fact that you will have to pay an extra fee (on top of standard fee). Also extended support may not include certification with some new third-party products/versions
3) Sustaining Support: You should always plan to avoid going into sustaining support. Reason is simple: not only an extra fee will be require on top of standard fees, but Oracle will not create new patches or fixes for products in sustaining support. Moreover there will be less available Oracle support resources to help you with you issues as most of the engineers are already supporting latest version of the product (versions in premier and extended support)
Refer to the following documentation for more details on Oracle support stages and support policies:
- Oracle Lifetime Support Policies main page: http://www.oracle.com/us/support/lifetime-support-068561.html
- Fusion Middleware Support Policy: http://www.oracle.com/us/support/library/lifetime-support-middleware-069163.pdf
Assuming that you have gone through the previous points, I created the following diagram to try and depict the evolution through time of the different Oracle SOA Suite releases and their patch sets along with their respective product support lifelines:
Based on this diagram and the information described in earlier points I would strongly recommend that:
- Plan your technology upgrade to latest major release at least one year before extended support starts. This will ensure that you will always be in premier support
- Try to keep up with latest patchsets. Note that there are constraints in extended and sustaining support around which patch set you are running (refer to previous links). Note that normally patchsets do not require re-coding and all migrations are usually assisted and can even be scripted. If you are worry about regression testing your code, look into implementing continuous integration or similar disciplines to automate execution of core test scripts (this is a best practice and you should try to do it anyway)
- If you already too late for you meaning you are in extended support (i.e. running 10g) and have no upgrade planned or you are only planning upgrade at this point, then by any means try to do it properly just don’t go and rush it. Chances are that you may anyways end up having to run the platform in sustaining support, not ideal by any means, but also not the end of the world. So my suggestion would be don’t waste any more time and plan a transformation strategy (see my subsequent points)
2)Take a SOA Transformation approach and not just a technology upgrade
But what does it mean to take to take a SOA transformation approach?
Let’s say for example that you are looking at upgrading your SOA infrastructure to a new major release, let’s say 10g to 11g or 11g to 12c. A typical upgrade project would focus mainly on technology and would almost certainly aim at changing as less as possible the existing code and services. By simply doing a technology upgrade, one would not only miss the opportunity to leverage the new product features, product enhancements and latest best practices available (because you would try migrate the code as-is whenever possible) but would also miss an opportunity to consolidate, rationalise and improve your existing services landscape therefore bringing benefits that would result in lower TCO.
For this reason, instead of focusing merely on the technology shift, take a step back and look at the bigger picture. Think about the potential benefits that you could bring to your organisation if you could also transform (not update or improve but transform) the processes and organisational/cultural aspect of the current solution that prevents realising such benefits.
How to know what benefits can be realised? There is always room for improvements. There will surely be areas that could be improved and haven’t for different reasons. For example there is no budget or there is no sponsorship from above to make the necessary changes or simply there is no enough skills in-house to execute such changes. To identify such areas that could be improve best thing to do is to conduct an assessment of your current integration landscape as suggested in point #3.
Also because a transformation approach requires fundamental changes to the core processes, technology and organisational/cultural aspects of your SOA solution, it is imperative of success that you engage with different parts of your organisation as early as possible to sell your approach and get buy-in. The toughest part of a transformation project is nothing to do with technology, it’s in fact dealing the the organisation and cultural changes it brings. I elaborate further on this topic in point #6.
Last but not least, there is no project is there is no funding. So to secure funding you must get approval from CFO or the like (unless there is spare IT budget to spend on this, in which case you would still have to justify the budget needed to CIO or CTO). I always compare this to going to a bank and asking for a loan. The bank wont lend you any money unless they are sure that they will get the money back and with interests (benefits). The bank business is to lend you money, so they want to do it, but they qualify the risk and if it makes sense then they will do it. Is the same within an organisation. C-level and D-level executives want to fund projects that deliver tangible benefits. But they wont just give funding away without proper analysis that there is a return on any investment they make. So to prepare for this you usually need to:
- Define a strong business case: The business case should express qualitatively and quantitatively why funding this initiative is the right thing to do. It should emphasize on the cost of doing nothing or doing it wrongly. Furthermore the business case should not be based solely on the fact that your platform will run out of premier or sustaining support at some point. Yes this will certainly help, however to justify a transformation project funding you need a lot more substance. If you have some budget available and you don’t have the time to do this, you could get an expert to help you define the business case. Below some references that can serve as inspiration for this task:
- http://www.wikihow.com/Write-a-Business-Case
- SOA Governance for the business: http://www.soa4u.co.uk/2013/11/oracle-soa-governance-for-business.html
- To support your business case, define a SOA transformation roadmap which lists at a high level (but with enough substance so it looks thought through) the set of activities needed to get to where you want to be. Following point elaborates more on this topic.
3)Elaborate a SOA Transformation Roadmap
This may sound a lot more simple than it actually is in practice. In order to succeed in elaborating a roadmap you must understand:
- Current integration landscape including architecture, maturity and service catalogues (see previous points)
- Ensure that you clearly understand your current integration landscape by creating a service catalogue. I am not only talking about your 10g services, but rather all your integration services and interfaces. It is very likely that you still have point to point interfaces written in PLSQL or using some old platform which has now become legacy. Some resources that can help you with this task:
- Excellent article providing 7 tips to elaborate a service catalogue: http://searchsoa.techtarget.com/photostory/2240212819/Seven-steps-to-develop-an-IT-service-catalog-Template-for-success/1/Using-a-service-catalog-to-aid-in-IT-documentation
- Excellent article by Manuel Rose and André de Oliveira Sampaio that talks about other things about how to create service catalogues blueprints with Oracle Enterprise Repository (OER): http://www.oracle.com/technetwork/articles/soa/rosa-sampaio-soa-gov-2080776.html
- Conduct an assessment of your current maturity state and then define a target maturity level. The target maturity state should be based on archiving tangible IT and business benefits. This is very important so you understand clearly where you stand and where you want to be. If you don’t understand where you stand and decide to upgrade your platform to 11g, even though you will be in a supported platform, the issues you have in your 10g implementation will remain there. Some resources to help in this task:
- Chapter 2 of my book Oracle SOA Governance 11g implementation talks about this : http://packtlib.packtpub.com/library/oracle-soa-governance-11g-implementation/ch01lvl1sec10#
- Oracle SOA Maturity Model: http://www.oracle.com/technetwork/topics/entarch/oracle-wp-soa-maturity-model-176717.pdf
- SOA Readiness Assessments: https://blogs.oracle.com/reynolds/entry/soa_readiness_assessment
- Based on the outcome of the assessment define some requirements that would have to be addressed in order for your implementation to get to the defined maturity state.
- Then plan to deliver your requirements in phases. The initial phases should focus on defining where you want to be based on where you are and setting up a strong foundation and governance framework that will ensure success once you start implementing the services. A high level view of this plan is basically your Roadmap. Some resources to help with this task:
- http://www.soa4u.co.uk/2014/01/soa-governance-faq.html
- SOA Governance for the business: http://www.soa4u.co.uk/2013/11/oracle-soa-governance-for-business.html
Below a sample high level view of a roadmap.
From this sample high level roadmap I would like to highlight the following:
- There are to major phases: Foundation Phased and Implementation Phase. Foundation Phase–as the name suggests, aims to deliver a strong foundation. Key design decisions, standards, reference architectures, enhanced software development lifecycles, methodologies and governance frameworks should be defined delivered in this stage. Implementation Phase focuses in the rollout of the new platform not only to existing projects that will have to be upgraded or migrated from other platforms but also by making the new platform available to incoming projects
- Implementation phase starts with a pilot project. This is not a PoC but rather a real project with very limited scope but that use cases covers enough scenarios and test cases to ensure that the future architecture is robust enough to support known requirements
- Once the pilot has been delivered a “lock down” should be defined to the as-is platform. For example if you are running 10g, you should not allow any more developments in the 10g platform once lock down has been put in place. Again this is easier said than done, and politics will kick in at this point specially as some influential and important projects will demand a solution
- Transformation of existing projects to the new 11g platform doesn’t have to be and should not be in a big bang. You should define a plan that allows you to run your 10g or other platforms in parallel to the new 11g platform so you can incrementally align projects which will –in a phased manner, implement the same services in your new 11g platform
- New incoming projects will require support. Lots of support. Don’t just assume that providing a link to some documentation will be enough for them to understand how to deliver according to the to-be reference architecture, guidelines and frameworks. One way of dealing with this is to assign some resources (ideally architects or designers) from your team into each of these incoming projects. These resources should act as mentors of the new solution and should coach on how to do things the new way
- This won’t take a day and it will require planning and it will require proper sponsorship from the right level (I keep saying this and sometimes I feel that I sound like a broken record, however it’s so important that I don’t mind repeating it)
- The following link provides some good tips when executing transformation programmes: http://www.itbusinessedge.com/slideshows/show.aspx?c=85374
4)Understand current and future technology stacks and identify potential risks and challenges in advance
This is a task that you will have to elaborate into detailed during your foundation phase. However even before you get to this phase, you should already have a good understanding of your as-is technology stack and how it maps to your to-be technology stack. Following an example of what I mean. The diagram shows how Oracle SOA Suite 10g and related technologies maps to the 11g suite and related technologies.
There are several factors that you should understand before you even start putting together a plan. What you are looking for is factors that will drive higher risks and effort. For example you should be looking for understanding:
- Upgrade paths: This no only applies to code but also to the code. For example, you should be aware in advance if there are specific restrictions in terms of minimum versions and patch sets that your platform and code should be on before doing an upgrade. You should also be aware of there are assisted ways of upgrading your core infrastructure as well as your code. In the previous diagram I depicted how some technology components of 10g maps nicely to 11g and how others don’t. For example, BPEL 10g and ESB 10g maps directly to SOA Suite 11g BPEL and Mediator engines. It is also visible that there is an assisted / automated way of upgrading the technology and code. However it is not the same story for other components such as OBPM 10g, BPA 10g processes and WSM 10g. These will require manual re-coding (yes re-coding as there is no official wizard or tools am aware of to automate this). Some good information on this (specially on the topic of 10g to 11g):
- A good 10g to 11g upgrade presentation. http://www.slideshare.net/oracle_imc_team/oracle-soa-suite-upgrade-10g-to-11g
- Oracle Upgrade Guides: http://docs.oracle.com/cd/E28280_01/upgrade.1111/e10127/toc.htm
- Upgrading business rules: http://docs.oracle.com/cd/E21764_01/upgrade.1111/e10127/migrate_rules_app.htm#FUPSS915
- AIA Migration: http://docs.oracle.com/cd/E29542_01/doc.1111/e17361/ch7.htm
- Architectural and best practices : Even if there are guided upgraded paths for some technology components there are several other factors that should be consider if you truly want to embark on a SOA transformation and not just a technology upgrade. Don’t just use a wizard because they are available (also be warned about Wizards –see the following point). To truly transform, you should evaluate architectural factors as well as new best practices available. Ideally a foundation phase as previously described would target to set in stone your future reference architectures and best practices so this task become a lot easier. Based on the previous diagram I can provide several examples of what I mean (however you should come up with your own depending on your target architecture and best practices):
- According to Oracle best practices, the strategic service bus in 11g is OSB and not Mediator. However if you have built services using ESB 10g the easiest way to migrate the code to 11g is by using the assisted wizards or tooling meaning that your ESB code will end up in SOA composites which will run in Mediator engine. This however doesn’t mean that you are making the best out of your to be architecture because in 11g for example, OSB has better routing capabilities. However in some scenarios migrating directly to Mediator might make sense. For example, if your service implements WS-Addressing (asynchronous services) as OSB does not supports this natively (there are work around thought but it’s not native).
- This is a very good article by Guido Schmutz describing best practices on when to use OSB: http://www.oracle.com/technetwork/middleware/soasuite/learnmore/where-and-when-to-use-osb-1885528.pdf
- Technology constraints: There could several changes in the technology stack that are less obvious and you will only find out after you start testing your code. You should try and identify this either by learning from other’s lessons learnt or engaging your vendor for detail feedback on this. Again using the previous diagram, I can list the following examples of what I mean:
- Wizards don’t to it all: Even for the technology components where an upgrade wizard is available don’t just assume that everything will work once code has been upgraded. There are several things these wizards don’t take care off. I would recommend the following link for more details on this: http://www.slideshare.net/oracle_imc_team/oracle-soa-suite-upgrade-10g-to-11g
- There is no MDS in 10g. Therefore if in 10g you had all of your schemas deployed as web application and accessible via HTTP ideally you would like to move these schemas into MDS in 11g (you don’t have to, but this goes back to my point about best practices). This however would require some changes in the code (so mds references are used instead of HTTP references) and also the schema project itself (so it can be deployed to MDS via JDeveloper or ANT). Refer to following link for more info: http://redstack.wordpress.com/2011/02/28/deploying-your-canonical-data-model-to-mds/
- If your 10g services consume other 10g services is by using concrete WSDL rather than abstract WSDL’s then you will run into issues. In case you don’t know the difference between the two, abstract WSDLs are usually generated by JDeveloper and do not contain any binding and/or port type information. Once a JDeveloper is deployed, Oracle SOA Suite automatically generates a concrete WSDL that actually refers to abstract WSDL but that defines the binding protocols and port types. In 10g during start up Oracle Application Server started each service in the same order that they were deployed. This ensured that if you had deployed your services in the right order, then they should all start correctly. However in 11g, Weblogic Server starts the services randomly so if a particular composite depends in a concrete WSDL for a service that hasn’t yet started, then the service will fail to start. To fix this issue you should change your code so it refers to abstract WSDLs whenever calling another internal service. More on this: https://blogs.oracle.com/aia/entry/aia_11g_best_practices_for_dec
- OBPM 10g (former ALBPM) doesn’t have assisted upgrade toolkit to 11g. So if you want to migrate OBPM 10g code to 11g you have to re-implement your processes. There is a chance that OBPM 10g will have assisted upgrade tooling directly into BPM Suite 12c
- WSM 10g also doesn’t have assisted upgrade toolkit to 11g. So if you want to upgrade WSM agents you should probably be looking at manually re-implementing them as 11g WSM policies and if you want to upgrade your WSM Gateways you should manually re-implement 10g policies into Oracle API Gateway (OAG)
- Business Process Architect (BPA) Suite also doesn’t have assisted upgrade toolkit to11g. Some aspects of what BPA suite can do can be migrated to BPM Suite 11g. However more richer enterprise modelling features Value Added Chains, organisational modelling, and others will only be supported in BPM Suite 12c
- Oracle Application Server 10g is no longer use in 11g and beyond. Weblogic Server becomes the core Oracle’s strategy JEE server
5)Define a service transformation methodology
It doesn’t have to be an overkill methodology. What you need is some concise steps which sets in stone the approach to follow when transforming a service from your existing platforms (i.e. 10g or other legacy) into your target solution. Purpose of the method is to ensure that all transformation activities are occurring following a consistent method and using the same set of guidelines and standards.
6)SOA transformation also requires organisational changes and maturity
This is for me without a doubt the most complex aspect of a transformation initiative. This because you can change all tools and even upgrade most of your processes , however without having a behavioural and cultural change in your organisation chances are that the same issues you had in the past will repeat all over again. This is explained in detailed in my SOA Magazine article 9 Tips for Organizational Maturity in SOA also available in my blog www.soa4u.co.ukNew in SOA Suite 12c and AIAFP/OER Backward Compatibility Table
Listing below some of the new features of Oracle SOA 12c that I am more exited about:
- Enhanced cloud integration with cloud adapters
- Improved mobile & IoT support with REST/JSON adapters (suggested article: http://technology.amis.nl/2014/06/26/soa-suite-12c-rest-adapter/)
- Seamless OEP integration (very useful for EDA’s or Big Data integration support)
- New Coherence adapter (suggested article: http://technology.amis.nl/2014/06/28/soa-suite-12c-first-steps-with-the-coherence-adapter-to-create-cross-instance-state-memory/)
- Improved user experience and productivity by:
- Finally having OSB IDE now fully supported by JDeveloper
- New “template” feature which allows developer to create blueprints of pre-built SOA/OSB composites/services
- “Composite like” development of OSB services
- Completely new ADF based OSB console
- Suggested article: http://technology.amis.nl/2014/06/26/soa-suite-12c-all-about-developer-productivity-and-performance/
- Improved support for large/small documents transfer by incorporating the Oracle Managed File Transfers
- Finally an OOTB Enterprise Scheduler (ESS) (suggested article: http://niallcblogs.blogspot.co.uk/2014/06/10-soa-12c-new-features-enterprise.html)
- Unified error hospital (suggested article: http://niallcblogs.blogspot.co.uk/2014/07/13-soa-12c-new-features-unified-error.html)
- Enhanced Business Rules composer but feature I like the most is ability to export / import rules to Excel!! (suggested article: http://niallcblogs.blogspot.co.uk/2014/06/11-soa-12c-new-features-enhanced-soa.html)
- Backward compatibility with AIA FP with the use of SOA Core Extensions (suggested article: http://docs.oracle.com/middleware/1213/core/INSOA/planning.htm#INSOA498)
- As per my understanding, OER harvester for SOA 12c assets will be available as part of the release of OER 12c (12.1.3) which will come out soon
Although 12c introduces many features which will make it easier to govern a SOA project, if you are using AIA or OER in 11g or if you are about to start a 11g project, you must take note of the following:
- AIA Foundation Pack will not be available 12c meaning there is no, and my understanding is that there will not be an AIA FP 12c release. This means that I don’t expect AIA pre-built integrations to be created explicitly for 12c . This makes sense to me as the original purpose of AIA FP was to provide a SOA framework specially aimed to help Oracle Apps practitioners kick start integrations between Oracle Applications (remember that at the time SOA was still immature specially for the Oracle Apps community in which SOA was still a big unknown). Note that some backward compatibility will be provided in SOA Suite 12c by enabling the SOA Core Extensions during the installation process.
- AIA Object Library (EBOs, EBMs, WSDLs) are not installed automatically as part of Oracle SOA 12c Core Extensions. To make these available you will have to extract your 11g objects and package them in a JDeveloper project so they can be deployed into MDS. I personally don’t think this is an issue at all as this is the same way I used to do it in 11g anyway!
- Suggest you read the Using SOA Core Extensions article for more info on this topic: http://docs.oracle.com/middleware/1213/soasuite/develop-sce/getstart.htm#AIRDV109
- OER 12c (12.1.3) will be released soon. This new version will support harvesting of SOA Suite 12c assets. I will provide links on this topic later on.
Feature | Requires AIA FP Installation? | SOA 12c AIA/OER Backward Compatibility |
Service Constructor JDeveloper Plugin | Yes and No. Yes, It can be used independently of AIA as it is a JDeveloper Plug-in however it requires AIA FP to be installed on server as otherwise composites deployed which were developed with constructor will not run on server. | This feature is not available in 12c. Not even as part of 12c Core Extensions |
Code Compliance Inspector (CCI) | No. It can be used independently of AIA as it is a Jdeveloper Plug-ing | Part of OER bundle. OER 12c (12.1.3) will be released soon and will support 12c SOA 12 harvesting |
Lifecycle Workbench | Yes. It requires AIA FP | This feature is not available in 12c. Not even as part of 12c Core Extensions |
Composite Application Validation System (CAVS) | Yes. It requires AIA FP | CAVS is available in 12c as part as SOA Core extensions |
Setup Pages | Yes. It requires AIA FP | Exception handling features of AIA FP are supported on 12c as part of 12c Core Extensions |
AIA Message Resubmission Utility | Yes. It requires AIA FP | Exception handling features of AIA FP will be supported on 12c as part of 12c Core Extensions |
AIA Solution Pack | No. Comes as part of OER installation | Part of OER bundle. OER 12c (12.1.3) will be released soon and will support 12c SOA 12 harvesting |
AIA Harvester | Yes. It requires AIA FP | Part of OER bundle. OER 12c (12.1.3) will be released soon and will support 12c SOA 12 harvesting |
AIA Deployment Plan Generator | Yes. It requires AIA FP | This feature will is not available in 12c. Not even as part of 12c Core Extensions |
AIA Installation Driver | Yes. It requires AIA FP | This feature is not available in 12c. Not even as part of 12c Core Extensions |
AIA WSM Policies | Yes. It requires AIA FP | Yes, this will be available in 12c. Anyhow creation of Policy Sets in WSM which will be supported in 12c are not complex to create |
AIA Composites | Yes. It requires AIA FP | Yes, exception handling related composites are available in 12c as part of SOA Core Extensions in 12c |
AIA Prebuilt Integrations | Yes. It requires AIA FP | It is not my understanding that AIA pre-built integrations (i.e. PIPs) will be created for 12c. However some backward compatibility will be provided in 12c with SOA Core Extensions |
AIA Error Handling Framework | Yes. It requires AIA FP | Exception handling features of AIA FP are supported on 12c as part of 12c Core Extensions |
AIA Logging Framework | Yes. It requires AIA FP | Logging features of AIA FP are supported on 12c as part of 12c Core Extensions |
AIA Metadata | No. They can be extracted from an environment that has AIA and then deployed as JDEV Metadata Projects | AIA Object Libraries (including EBOs) are not installed in 12c along with the Core Extensions. Only way to deploy these libraries to 12c will be packing them in a JDeveloper project and deploying it to 12c MDS |
SOA / API Development Tools Tips
Having been delivering SOA projects for over a decade, I’ve come across many tools some of which I hate and avoid using them (unless a client demands so) and others that have made my life easier when delivering projects.
The below table is a recollection of tools I have used or come across which I find useful and recommend SOA/API practitioners to use or at least evaluate. Enjoy :)
SDLC | Tool Name | Description + Links |
Project/Scrum Management and Collaboration | Jira | Jira when used for scrum management is In my opinion is the the best tool I've used for managing scrums specially in an offshore / onshore distributed environment. It also has capabilities to manage GIT repositories which makes this an ideal tool for a complete cloud/based agile project with users all over the world. https://www.atlassian.com/software/jira |
Agilo | I used this tool some time back successfully in a large onsite SOA project and it worked very well for us. Product has come along way since then and It's more feature rich than it used to be. It has a 30 day trial. http://agilosoftware.com/ | |
Coop App | very clean UI supporting features such as share status updates, questions, links, and others. http://coopapp.com/ | |
PBworks | Suite of tools including in-app instant messaging, live notifications of changes to work spaces, live editing of documents, voice collaboration, wiki, and others. Can be used for full collaboration including project management. http://www.pbworks.com/ | |
Configuration Management | GitHub | I have been using this tool recently but found it amazing specially because of the GitHub client which is not intrusive to filesystem (like Tortoise and that create issues some times in the local file system) and very easy to use. It's social collaborative capabilities are awesome but also supports private projects however this latter feature it's not free. Also there are tutorials online. https://github.com/ try.github.com |
Subversion | This is the version control system I've used the most and still using the most in client side. Compare to any other traditional version control system (i.e. CVS, Clear Case, MSTFS, RTC) I think this outperforms them all, not only because of it’s simplicity, but because of the wide availability of subversion clients available and community support. My preferred client is Tortoise. Also there are clients available for JDeveloper. There is different installation options. The apache option can take longer as you have to install Apache HTTP s ever separately, for this reason I used collabnet which is very easy to use but has some licensing implications. There is also bridges available to link subversion with other repositories such as GitHub, or to use SVN clients against repositories other than subversion. Servers: www.collab.net https://subversion.apache.org/ Clients: http://tortoisesvn.net/downloads.html Jdeveloper Subversion Extension (added from Jdev directly) Bridges: https://svnbridge.codeplex.com/ http://www.bioconductor.org/developers/how-to/git-svn/ | |
Jenkins | The best continuous integration tool I have used so far (even when compared to proprietary tools like IBM BuildForge). There are so many plugins available like for example reporting, performance testing, Maven integration, which makes this a true gem when implementing large integration projects. http://jenkins-ci.org/ https://wiki.jenkins-ci.org/display/JENKINS/Plugins | |
Dockers | In simple words, Dockers it's a new paradigm for creating portable applications that are available in the cloud and can be checked out and run in multiple platforms that have Dockers installed. Yes, it's that simple. Dockerized apps can be checked out from a central server, can be modified, re-packed, checked into the cloud again and so on... Reason I say it's a new paradigm is because Dockerized apps are basically running in fully segregated compute capacity of the underlying OS, so basically it's sort of like a virtualised environment, but it's not. It's just a container ! there is a great tutorial in the following link: https://www.docker.com/ https://www.docker.com/tryit/ | |
Puppet | Put simple, Puppet it's a framework to automate the installation and configuration of systems / applications in a variety of environments, i.e. from sandbox, to dev., SIT, UAT, NFR, Prep rod, to production. Puppet is very robust and it's very scalable. By creating Puppet manifests using a DSL based on groovy, you can define the installation steps of complex systems and complex topologies such as Oracle RACs and Oracle SOA Suite clusters. It comes in 2 flavours, an open source version which has several restrictions (i.e. no GUI), and a licensed version puppet enterprise) with is more feature rich. For puppet to work in a distributed environment, there is a Puppet central server which stores all the manifests (in a YAML store) and puppet agents which are deployed into the targets where software will be installed and configured. There is a new type of "masterless" configuration being popular now days which removes dependency on the master server. http://puppetlabs.com/ http://puppetlabs.com/puppet/puppet-open-source | |
Chef | Conceptually it's a similar solution to Puppet. However instead of DSL based on groovy, it's DSL it's Ruby. Also instead of "manifests" you create "recipes". Some people from a sysadmin background don't like this and also the fact that it uses JSON data structures, and a Postgress data base. However if you come from a web development background (like me) this should not be an issue at all! in fact the opposite. Chef also comes in different flavours Chef Essentials (Free), Chef Subcription, and Site. Also there is a hosted options. To be frank, I found the flavours a bit complicated to undersand.... Chef also relies on a client/server architecture, where a server contains all recipes and the clients are deployed to the nodes where installations/configurations will take place. Note that although there is a free version, Chef it's in fact not open source.... | |
Ansible | The work of Michael DeHaan (creator of Cobbler a popular linux install server), it's yet another CM tool but unlike Puppet and Chef it does not follows a client/server architecture meaning that is agentless. It follows a push model and it's transport it's SSH. Configuration files are store in YAML "playbooks" (equivalent to recipes or manifests). The playbooks can actually reside on any node and then as said configurations are pushed using SSH. This makes Ansible of all options the simplest one (in theory as in practice I haven't tried it yet but I willl as I find it very attractive). | |
API Management & Governance | API Catalog 12c | New product released at OOW! a light-weight version of OER, fantastic tool to create a catalogue of your available services and APIs without the hazard of implementing a full OER solution. Basically all you need to do is set install API Catalog (with same binaries as OER 12c) and harvest your OSB and SOA Domains or WSDL/WADL URL’s directly. It has a very clean and nice new UI so you don’t have to worry about all the complexity of OER. To install download OER 12c and select API Catalog install option. |
API Manager 12c | New product released at OOW! not out yet, but will be soon!. Basically built on top of OSB, it will allow you to define from OSB console or JDeveloper which OSB Proxy services are “managed” and then they will become available in API Manager. API Manager is basically an application which will provide a facility for API designers as well as API consumers to access and use/managed your published APIs. At present this product is not meant for DMZs but rather for internally published APIs. For DMZs, API Catalog is a better options. Not available for install yet. | |
Oracle Enterprise Repository (OER) 12c | Will not say much about this as my blog is full of information about this tool plus I've written a book about too. One thing though, many companies are in a phase now to try and modernise and transform their services landscape, this tool can help gained proper visibility over existent assets therefore create a proper inventory of available assets which can then be used to re-design / transform the solution into a more mature state and also avoid ending up in more duplication as transformed services will be visible/searchable in the repository. There is a coming 12c release of the products which will provide new flavours of the product, one of which is light-weight and focused for API management. | |
Design | MOGUPS | If you also have a requirement to build a UI mockup for your services, this is a fantastic online tool to do all of this. I really found it easy to use and feature rich. It's not free but monthly fee are reasonable. |
INK Scape | My preferred tool to create killer vector-based diagrams when doing design. The best of all, it's open source. | |
Tools for generating UML like designs: | Although InkScape it's great for graphics, when it comes to generating UML like diagrams, it really falls a bit short specially when it comes to creating a central-collaborative repository. For this purpose the tools I usually end up using are: 1) Sparx Enterprise Architect: The best tool out there in my view but not cheap. www.sparxsystems.com/products/ea/ 2) MS Visio (the obvious option): Good tool but lacks strong collaborative features like EA www.microsoftstore.com/Microsoft_Visio 3) JDeveloper for Sequence and Class diagrams (although it's not really the best tool for this): Option if there is no EA or visio license oss.oracle.com/jdeveloper.html | |
Build | Oracle JDeveloper | As an Oracle SOA expert, this is the IDE of choice for building SOA composites and OSB services and APIs. 11g version is very good however the 12c version truly is a gem and so much capabilities are now available in the tool (such as building OSB's proxy/business services and OEP streams). https://oss.oracle.com/jdeveloper.html |
XML Spy | I still believe this is the best XSD / XML editor there is. Specially when building complex canonical models with tons of inter-dependent schemas, this tool truly steps up. Unfortunately it's not cheap! But in large projects with tons of XML editing, purchasing it can be justified based on productivity gains www.altova.com/xmlspy | |
Online Json Editors | There are some excellent online JSON editors available. Here some links of the ones I often use: http://www.jsonschema.net/ http://www.jsoneditoronline.org/ http://json.parser.online.fr/ | |
Notepad ++ | Many times we want to edit files quickly and that aren't necessarily related to a JDEV app or project (i.e. config files, shell scripts, etc). For this scenarios instead of using notepad, I always used Notepad ++. I think is the best editor out there for windows plus it has some very useful plugins http://www.sunjw.us/jstoolnpp/ | |
JSToolNpp for Notepad ++ | Excellent Notepad ++ JSON viewer plugin http://www.sunjw.us/jstoolnpp/ | |
D3 | Not really a tool but rather a JavaScript lib. The most powerful graphic generation library I've seen so far. Combining the graphic capabilities of this library with your solutions will deliver a greater impact to the consumer of the solution. At the end of the day "if you can't draw it you can't understand it" and with this tool, you can generate hundreds of different views to exploit your data. http://d3js.org/ Free eBook available in following link: http://chimera.labs.oreilly.com/books/1230000000345/index.html | |
Testing | Gen Rocket | Generating robust and meaningful test data dramatically improves the quality of the code as test cases become more relevant and scenarios more realistic. However this is often an undermine task and it's usually developers that end up creating test data which not always covers all required scenarios or is meaningful enough. A colleague of mine shared this tool and although it's not open source, it does provide some very good features to create projects to generate data for defined data objects and automate the generation of test data at a massive scale. Data can be generated in several formats such as XML, csv, etc. http://www.genrocket.com/ |
GenerateData | A very simple, web based, open source tool for generating test data. It all can be done online and data can be generated in different formats like csv, xml, JSON, SQL, LDIF, etc. http://www.generatedata.com/ | |
Oracle SOA Suite Test Suite | Great feature of SOA Suite available in Jdeveloper to create and automate unit test scenarios to test composite wires and components. It can also be integrated with Jenkins jobs for example for continuous integration / regression testing http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/bp_testsuite.htm | |
SOAPUI | This is now a well know tool in the industry for testing web services. However incredibly as it sounds not every knows that the tools can also be used to generate service stubs and to do performance and penetration tests although these last too require purchase of a license, but still an awesome tool. http://www.soapui.org/ | |
Code Compliance Inspector (CCI) | Comes in two flavours. As JDEV plugin and also with OER as a utility. I had issues with the former but the latter worked quite well for us and we also managed to incorporate CCI code check as part of our build/deployment/continuous integration process. So every time someone checks code into main branch, we actually automatically checkout the code, do a CCI code compliance test and then build and deploy. If code is not compliant we send a error notification to a distribution list. http://docs.oracle.com/cd/E28280_01/doc.1111/e15754/codecomplianceinsp.htm http://docs.oracle.com/cd/E28280_01/doc.1111/e17366/chapter20.htm | |
Zed Attack Proxy (ZAP) | Created by OWASP community, this is a fantastic open source tool to test security vulnerabilities in web applications and can also be used for testing REST and Web services https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project | |
Apache JMeter | For me one of the best open source performance testing tools available, allows for all sort of performance tests to be created either for simple HTTP requests or for web service or REST service invocations. It supports distributed and multi-threading testing. http://jmeter.apache.org/ | |
WSDigger | It's an open source tool for testing security on web services. Haven't use this tool vastly but I used it against standard SOAP based services and it worked well. I however don't see that it has been updated recently which is a shame really! http://sourceforge.net/projects/foundstone/files/WSDigger/ | |
Production Support | Xymon | Really awesome, open source and lightweight tool to monitoring web services, networks, etc by using different extensions available. For web services, XYMON can be used to monitor health of HTTP endpoints for example and to ensure that services are up and running. When issues are identified, XYMON can be confirmed to send notification alerts via SMS and email amongst others. |
Oracle Business Transaction Management 12c | BTM for transaction monitoring http://www.oracle.com/technetwork/oem/btm-496775.html | |
Oracle BAM 11g/12c | BAM for activity monitoring and user/business facing dashboard: http://www.oracle.com/technetwork/middleware/bam/overview/index.html | |
Oracle Enterprise Manager 12c | OEM for operational monitoring (App performance management, instance status, health checks, etc.) www.oracle.com/EM |
Oracle API Catalog 12c Full Overview
This blog is about my first impression when installing, configuring and using Oracle API Catalog. In the blog I provide all steps I followed to achieve these tasks and at the end I provide a summary of my experience and feedback of the product.
Installation Pre-requisites
- Download Weblogic Server 12.1.3 and OER 12.1.3 software binaries from following link (note that OAC uses same OER installer)
- You will need an Oracle Database installed (you may also download database from previous link). If you already have an environment with an Oracle Database available you can check supported versions from following link
- Ensure you have installed JDK 7.0 Update 55 or later. You can download it from the following link:
- Oracle API Catalog Home Page and Installation Guide:
https://docs.oracle.com/middleware/1213/oac/install-cat/toc.htm
Installation
Firstly install Oracle Database and Weblogic Server as per instructions.- Oracle Database installation: https://docs.oracle.com/database/121/nav/portal_11.htm
- Oracle Weblogic Server installation: https://docs.oracle.com/middleware/1213/core/WLSIG/planning.htm#WLSIG237
Following key screenshots taken during installation of Weblogic Server and OAC and also some tips:
Installing Weblogic
- Launching Weblogic 12.1.3 installer

- Click Next and choose your FMW home (I’ve used /u01/fmw2 as I have SOA Suite 12c under /u01/fmw)

- Click Next and select “Fusion Middleware Infrastructure”
- Click Next and un-select option to get updates if this is a local or demo environment, then click Next and click Yes
- Click Install and then Finish if all goes well, otherwise check the logs for issues and retry

Installing OER binaries (OAC uses same installation binaries)
- Launch OER installer

- Click Next and select previously created FMW home (in my case /u01/fmw2) and click Next

- Click Next, Next again and then Install
- If all goes well click Finish, otherwise check the logs for issues and retry
Install Patches for RCU and Weblogic
- Instructions in following link https://docs.oracle.com/middleware/1213/oac/install-cat/install_gui.htm#CATIG394 , below summary:
- Go to Oracle Support and download patch 18791727 (RCU COMPONENT FOR OER OAC)


- Run Opatch

- Check that it succeeds and if so apply Opatch for Weblogic

- Go to Oracle Support and download patch 18718889 (WEB SERVICES RUNNING ON WLS FAIL WHILE MAINTAINING SESSION)


- Run Opatch

- Check that it succeeds

- Run ./opatch lsinventory to ensure all patches were applied successfully

Run RCU
- Run <FMW_HOME>/oracle_common/bin/rcu.sh

- Click Next, then select “Create Repository” and “System Load and Product Load” and click Next

- Enter DB details and click Next and then Ok. Then select which schemas you wish to create. In my example I created schemas for both OER and OAC (ensure you use the right prefex. In my case I used “DEV” but you may used any other depending on what environment you are installing). Then click Next and Ok again

- Enter password for the schemas and click Next, check that all schemas are correct and click Next and then Ok twice

- Click Create

- Click Close if all goes successfully, otherwise check logs and try again

Extend Domain
- <FMW_HOME>/oracle_common/bin/config.sh

- Select “Create a new domain” and ensure you provide a meaningful name to the domain, i.e. oac_domain (this will not cause installation to fail but in future it might create confusion around what the domain contains and purpose of it). Then click Next

- Select the template for “Oracle API Catalog" and click Next. Don’t try select OER and OAC template simultaneously as it will won’t allow you!! I tried this too!

- Enter the admin credentials for Weblogic server and click Next
- Select Production if you want more robust security or Development if you wish credentials to be loaded from boot.properties. Use default JDK (you may change this setting in a real production environment)

- Enter the DB details and credentials for the OAC schema and click Next

- Test connection and if successful click Next
- Select “Administration Server” and “Managed Servers, Clusters and Coherance” and click Next. Specially ensure you don’t miss Admin Server!!

- Select “All Local Addresses” so admin server listens to all IPs available in the server. Also ensure you change admin server port if you have other environments installed in your machine. Then click Next

- Do the same for oac_server1. Select “All Local Addresses” and ensure port it’s not already used then click Net

- Click Next twice (as am doing a demo environment I have no need set up a cluster and pinned servers to a machine)
- Click Create

- If Domain creation is successful click Finish

- Start Admin Server and then oer_server1


- Check the following link for best practices on stopping and starting Weblogic admin and manage servers: https://docs.oracle.com/middleware/1213/wls/START/overview.htm#START112
- Check post-installation steps for running OER diagnostic tool: https://docs.oracle.com/middleware/1213/oac/install-cat/post.htm#CATIG197
UI Look & Feel
Ok so finally the fun start!! we’ve done the installation and everything seemed to have gone smooth. Now let’s have a look at the UI:- Once servers have started open following url: http://localhost:8111/oac

- Enter default credentials (admin / weblogic1) then it will ask you to change credentials
- Home page looks very clean and nice. I can see that there aren’t as many options as OER and there is no “Asset Home Page” so I won’t be able to create/add assets from here. There isn’t an option either to create/modify Asset Types. OAC only support one asset type which is APIs.

- There are 2 other main pages: MyAPis and Admin


- The Admin page looks very similar to OER and the security model around users it’s similar to OER however there is no concept of “Projects” as there was in OER 11g. I think this is a good thing as Projects could confuse non-experts users. If you are not familiar with this model, below is how OER 11g user security model looked like. In red entities that don’t apply for OAC so it should give a good idea of how users and departments can be configured

Harvesting API Assets
- Harverster is available under <FMW_HOME>/oer/tools. Unlike OER 11g, no need to unzip ! just configure HarvesterSettings.xml and start using it!
- Let’s configure HarvesterSettings.xml to connect to OER


- Run ./encrypt.sh as following to encrypt password in HarvesterSettings.xml

- Now let’s harvest a REST API by running “./harvest.sh –file “<REST WSDL URL>”

Note: Harvester has several features available including harvesting OSB services and SOA Composite applications. For more detail info read the following page:
https://docs.oracle.com/middleware/1213/oac/administer-cat/harvest_oac.htm#CATCG433
Discovering APIs
Now let’s go back to the OAC home page and let’s see if our API is registered.- By default APIs harvested are not registered as “Published hence they don’t appeared in the home page. So to find the API select “All APIs” from dropdown menu as per below and click on search icon

- Now the harvested API (WADL file) appears in the search results. Click on the API to see more details

- On this page you can see all metadata associated with the API. Let’s edit the API by clicking the pencil icon

- Now from here we can change the status of API. From Active Status dropdown select “Published” and click save. Now API should show up in home page

- Yep, now is there.

- If you want to rate the API and add comments, you need to add the API to MyAPIs. To do this click again on API and then click on Folder icon

- Then go to the “My APIs” page, and from there click on the Comments icon. A popup will appear, from there rate your API and add your comments

- Go back to home page and you will see your 5 star API :)

Summary
- Installation is comprehensive and I like the fact that RCU is part of Weblogic binaries. Although you had to apply 2 patches before you can run RCU and extend domain it’s pretty straight forward and well documented. In total it took me between 1hr and 1 1/2 hr to do core installation (bearing in mind that I used an environment with a DB already installed and I had already downloaded all binaries and patches needed)
- Tools (in <FMW_HOME>/oer/tools) are already unzipped which makes it a bit easier to configure harvester
- Encrypting password can be done directly against password in HarvesterSettings.xml which is very straight forward to do
- Harvesters is the same as OER. So executing harvester is very straight forward and easy. Best of all a lot of the information available in my SOA Governance book for 11g will still be useful for OER 12c and OAC
- Harvester supports REST APIs published with WADL files
- OAC UI’s are very lean, user friendly and intuitive. There isn’t as many pages as OER and it is not possible to add assets or create/modify asset types from the console. However I think this is a good thing to keep the complexity low and focused at only cataloging APIs asset types
- The “MyAPIs” screen I found very cool. Also the ability to rate the APIs and submit comments / reviews I think will be extremely useful is OAC is used for example as an external catalog for “customers of the APIs” to rate and comment on APIs
- Admin page seems similar to OER however simplified as OAC has no concept of “Projects” (which I think is a very good thing). Also only basic access settings are available unlike OER where you can configure CAS (Custom Access Settings). Also other features such as Compliance Templates are also not available. Again this is not a bad thing as it adds to the point of keeping it simple
- My recommendation to implementers and companies looking to adopt governance but that don’t yet have mature processes or tools, to start off by using OAC and as their SOA adoption and governance mature then incrementally start planning for a more complex governance implementation using OER 12c
- All in all, OAC is the killer OER app. Installation process it’s smooth (even patching process is simple), UI is very clean, functionality is “fit for purpose” and harvester is as feature rich as one available in OER.
A Word About Microservice Architectures and SOA
In this article I will talk about my first conclusions and my point of view regarding Microservice Architectures. As there is still quite a lot of confusion and debate out there on this topic, I will try to describe with my own words what Microservice Architecture is, how does it differ from typical Service Oriented Architectures (SOA) and what design principles and practices governs it.
What is a Microservice Architecture?
In the article http://martinfowler.com/articles/microservices.html written by Fowler and Lewis, Microservice Architecture is described as following::
Microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies
The article overall it’s a fantastic piece of work (really suggest you read it). The way Microservice Architectures it’s defined opens up a few pandora boxes (in a good way I think) which I will talk about subsequently.
First of all, if you are familiar with SOA and it’s guiding principles this will seem very familiar (read for example: http://en.wikipedia.org/wiki/Service-oriented_architecture or http://www.soa-manifesto.org/). Yet, if you noticed the highlighted texts, it’s not quite the same as what we are used to in traditional SOA. The truth is, wether we accept it or not, SOA architectures evolved around the adoption of certain design patterns (such as Enterprise Service Bus (ESB), canonical schemas, centralised contracts, -see http://www.soapatterns.org/ for more) and the use of SOA specific infrastructures to build and deploy services and APIs became the approach of choice (note that the service vs API topic it’s not discussed in this post. For my view on this read http://www.soa4u.co.uk/2013/09/restful-is-also-soa.html).
From my perspective, I would define Microservice Architecture’s as both 1) a design pattern and 2) a discipline for delivering services and APIs. To elaborate further based on my conclusions I can highlight the following guiding principles:
- Delivering business focused and lightweight services/APIs that are truly design, built, deployed and executed independently of each other (meaning that in terms of infrastructure dependencies, they share very little)
- Strong focus on people collaboration and communication as the main mechanism in the adoption of best practices and standards rather than common set of strict guidelines and standards that constraint the way services are define, built, deployed and maintained
- DevOps (config management, deployment automation, CI, Continuous Delivery) as a fundamental building block rather than a value add
- Scalability should be easy as services are very lightweight and stateless (The same service can run in many servers and DevOps makes the deployment process automatic and easy)
- Doesn’t encourages the use of monoliths to deploy services (a monolith is for example an application server or an ESB). Services should run almost as demons
Microservices vs SOA
To make my point more clearer, I created the following diagram to compare the system layers in a traditional SOA infrastructure to a Microservice one:
As it’s visible in the diagram, there are many similarities between the two, however there are three key differences, two of which are very obvious but one that is not (there are more that you can deduce from the digram and all the links I’ve provided):
- First of all, traditional SOA implementations have been built around the use of monoliths ( or as Microservices calls it: Monolithic Architecture pattern -read http://microservices.io/patterns/monolithic.html)
- In a Microservice Architecture on the other hand, services and APIs are built and deployed without almost any dependency on an underlying application server or application. This means that services run as processes of the OS and share very little in terms of underpinning application infrastructure. This is because in Microservices (as per the highlighted text in Fowler’s / Lewis's definition) services and APIs should ideally run independent from each other. Another good article for this is http://microservices.io/patterns/microservices.html
- The third one -not obvious, is around composition of services. Traditional SOA promotes the use of orchestration (i.e. BPEL) whereas Microservices encourages the use of choreography. The fundamental difference here is that in Orchestration you need an “orchestra director” that defines and manages the interaction logic between all services (basically the BPEL code that executes or even in SOA composites, the SCA file like composites.xml that dictates at runtime how components interact). Choreography is different. Is a design time mechanism to model service interactions and behaviours but then once a service is built and deployed they should “know what to do”. Think of it as a protocol. A good analogy: "Dancers dance following a global scenario without a single point of control" (http://en.wikipedia.org/wiki/Service_choreography)
The following forum thread also provides a good point of view on the commonalities and differences of the two http://stackoverflow.com/questions/25501098/difference-between-microservices-architecture-and-soa
Now that I’ve described some of the key differences, I want to make it more obvious by showing a piece of code for a service built following the Microservice Architecture pattern. The snipped is based on Node.JS (https://nodejs.org/) Express (a lightweight app for Node -http://expressjs.com/). Do note that Microservices can b built in any technology (i.e. Java) so long that the guiding principles are adhered to.
(full example on http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/)
As it’s visible, this simple REST API is fully self-contained. It not only defines the resources that the API will provide and the HTTP verbs to use, but also defines the port the API will listen to. This basically means that this API will be self-contained and running in it’s own process. Fascinating isn’t it?
In regards to people, Microservice Architectures encourages the creation of multi-disiplinary teams that are organised around the capabilities that specific micro services will support, rather than creating different teams based upon for example the different technologies and layers involved in the creation of a single microservice. As per Conway’s law, the systems you build will be a reflection the organisation and communications structures you followed ( I’ve about this in http://www.soa4u.co.uk/2013/11/9-tips-for-organizational-maturity-in.html). In addition it is encouraged to have strong communication and collaboration mechanisms as this becomes the preferred way to share best practices and standard documents written ages go and available in somewhere in a forgotten content management system.
Furthermore DevOps/Contionus Delivery in Microservices really is a must-do rather than a value add. At the end of the day, DevOps main objective is to bridge the gap between development and operations team therefore delivering high degree of agility into the main software development lifecycle (SDLC) stages. For automation aspects of DevOps, below a nice diagram that can serve as inspiration on what tools can be used for each phase.
Microservice Architecture is NOT a silver bullet! - ESBs are still needed
I personally think ESB’s still have a role to play to bridge application integration gaps in large enterprises as “choreography” alone all become streamy challenging in such large landscapes. The need for a robust tool to handle message routing, complex transformation, enrichment, throttling, and virtualisation tasks is still very valid and needed. The truth is that large organisations have many systems, many of which are commercial of the shelf (COTS), others are legacy, and others bespoke. Solving this integration challenge its not an easy tasks and a combination of technologies and architectural approaches is usually needed.
I can see this same issue occurring with Microservices as inevitably the number of microservices will grow exponentially and without a doubt governance will become challenging. This is the reason why SOA Governance and API management tools exist. it is one choice to define the right governance model (strict or lose). Also common problems such as visibility, lack or reusability, dependency management, amongst other will still be there in micro services. Therefore leveraging SOA governance and API management tools such as service and API catalogs and enterprise repositories will add a lot of value in they will help solve some of the common governance challenges.
I personally think that Microservice Architectures add most value when use for the right use case. For example, to build systems and applications with a very well define system boundary. Not necessarily to address all of the integration needs in an organisation. In other words, I don’t think Microservice Architecture is a silver bullet. I see it as another very good pattern that can be used when it applies, but as everything if overuse, challenges will come for sure.
Another excellent use case where Microservice Architectures can apply nicely is around Internet of Things (IoT) and Machine to Machine (M2M). This is because by default devices are constrained by default on it’s hardware capacity and although at the moment focused is mainly in sensors, there is a lot of value in also having devices expose functionality and data via lightweight APIs (using protocols like MQTT or AMQP). This will allow devices to either interact amongst them (and this can be modelled using choreography languages like WS-CDL for example) or take part in a broader IoT ecosystem where the device can take part in a broader business process.
Conclusions
I definitely see a lot of benefits and value adds in Microservice Architectures. I like the fact that there is very clear boundary between services not only logically but also physically. I never liked the fact that if an ESB goes down all services running in it also get affected…For this reason I think that major SOA and ESB’s vendors will embrace the Microservice Architectures way and might end up extending existing tools somehow to support or partly support this paradigm or creating additional tools into their suites to support the creation of micro services.
Finally I think that some of the forgotten specifications such as WS-CDL (http://www.w3.org/TR/ws-cdl-10/) will get traction again as they do have a role to play in the Microservices world, or at least that is what I would like to think.
Hope you enjoyed the article :)
Installing MAF 2.1.2 and MCS Lab Utility on Mac (OS X Yosemite 10.10.4)
Word of Caution
- Uninstall JDK 1.8 or JRE 1.8 (if you don’t have a JDK installed yet) by following these instructions
- JDK uninstalling steps: https://docs.oracle.com/javase/8/docs/technotes/guides/install/macjdk.html#A1096903
- JRE uninstalling steps: https://www.java.com/en/download/help/macuninstalljava.xml
- Download JDK 1.7 from: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Download JDK 1.8 (for later use) from: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Download JDeveloper 12.1.3 from: http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
- Install Xcode from https://developer.apple.com/xcode/
- If Xcode is already installed make sure SDK is installed by clicking on Xcode Menu > Preferences > Download
- If no simulator is installed, click on the latest simulator to install it
- Double click on jdk-7uxx-macosx-x64.dmg to install JDK 1.7
- Open a command prompt and check that it was properly installed by running java -version
- Open a command prompt and change directory to the folder where jdevsuite121300.jar was downloaded to.
- Then execute: java -jar jdevsuite121300.jar
- Follow steps as indicated. Make sure to take note of the Oracle inventory and Oracle home paths as you might need them later
- Also if you’re planning to run different installations of Jdeveloper, use a distinctive Oracle home (i.e. fmw1213-maf212)
- Open Jdeveloper and click on the menu Help > Check for Updates
- Tick on “Official Oracle Extensions and Updates” and click Next
- Tick on “Mobile Application Framework” then click Next
- Click on “I Agree” then click Next and finish
- Don’t restart JDevleper when prompt. Instead close it
- Now install JDK 1.8 by double clicking on jdk-8u51-macosx-x64.dmg
- Open Jdeveloper
- When prompted to enter JDK 1.8 enter the path which usually is "/Library/Java/JavaVirtualMachines/jdk1.8.051.jdk/Contents/Home" and click Ok
- Right click on ViewController from the projects window then select “Project Properties” then click on Libraries and Classpath. Make sure that the Java SE version is "MAF JDK 1.8 Compact 2 Profile”. If this is not the case chances are you will hit issues. You may try the following solution but there is no guarantee it will work https://community.oracle.com/thread/3669368
- Go to http://docs.oracle.com/cd/E6577401/tutorials/tutmcsbasic/tutmcsbasic2.html and click on “Downloads” to get file labfiles.zip.
- Unzip labfile.zip
- Open Jdeveloper (if not already opened)
- Using Jdeveloper open file <path where unzipped>/maf-mcs-utility-2.1.3.1.4/PublicSample/mafmcsUtilitySample.jws
- Click on the menu Jdeveloper > Preferences and then Mobile Application Framework > iOS Platform
- Click on the Browse icon and search for the folder "Automatically Add to iTunes” note that in my case it appeared as "/Users/luisweir/Music/iTunes/iTunes Media/Automatically Add to iTunes.localized” for some reason
- Click on menu Run Click on menu Build > Clean all
- Right click on ViewController and then click Run > iOS Simulator
- Hopefully the Simulator Window will open!! if it doesn’t, well, good luck finding a solution (and if you do, kindly add it to this blog for others to learn from it)
Oracle API Management Implementation 12c Book Overview

The fundamental driver for digital transformation is the ability to unlock key information assets and business functionality, which is often hidden inside an organisation’s enterprise systems and in SOA based web services which are only internally accessible. To materialise these assets, organisations need to build web based Application Programming Interfaces (APIs) that not only provide standard, lightweight web access to these assets but also do so in a secured and controlled fashion. The lightweight nature and ease of use of these web APIs, ensure that they soon become the main mechanism for accessing information and functionality that is needed to build mobile applications, responsive websites and other cloud based solutions.

API management is the discipline that governs the software development lifecycle of APIs. It defines the tools and processes needed to build, publish and operate APIs including the management of the community of developers around it.

Oracle API Management 12c Implementation is a complete and comprehensive guide to implementing API management in an enterprise. The book explains in great details how API management relates to other disciplines such as SOA governance and DevOps. It explains how and where SOA governance and API management converge giving rise to Application Services Governance (ASG). Very importantly, it uses real life case studies and many examples to show how to successfully define and implement a single and robust API management strategy with the Oracle API management solution.

The book starts by describing all of the fundamental concepts around API management and related disciplines such as SOA Governance and DevOps in order to dispel the confusion surrounding these topics.
All of these concepts are then put into practice by the elaboration of a realistic case study of an organisation, which had previously succeeded in the implementation of a SOA governance solution, and now needs to extend this with API management. During the elaboration of the case study it is explained:
- The business requirements that lead to the identification of API management as a potential solution
- All of the steps taken to define a API management strategy
- Definition and execution of an API readiness assessment and gap analysis: in terms of people, tools and technology

- Product evaluation and selection explaining why Oracle is the answer

- API management implementation roadmap

The book goes on to show the steps required to implement the following API Management Reference Architecture using Oracle API Management solution (Oracle API Catalog, Oracle API Manager and Oracle API Gateway) to solve the specific business needs described in the use cases.

In summary what you will learn from this book:
- API Management, its concepts, goals and objectives
- The differences and similarities between API Management and SOA Governance; where and how these two disciplines converge into Application Services Governance (ASG)
- Application Service Governance (ASG) and how to define an ASG governance framework
- Elaboration of an API management strategy including: identification of business drivers, API management readiness assessment, gap analysis, creation of a digital reference architecture and elaboration of an implementation roadmap
- Definition and execution of an API readiness assessment and gap analysis: in terms of people, tools and technology
- Product selection criteria and evaluation - Why Oracle API Management?
- Implementation of Oracle API Catalog (OAC) including topics such as OAC bootstrapping and harvesting using the shell and ANT harvester scripts and also from JDeveloper, OAC console, user creation and management, API metadata, API discovery and also how to extend the functionality of OAC using the REX API
- Understand how to manage a set of APIs. Explain the general challenges of API Management
- Implementation of Oracle API Manager (OAPIM) including creation, publishing, management and deprecation of APIs, API runtime monitoring, API key generation, API subscriptions and API community management with the OAPIM portal
- Understand the challenges for organizations looking to expose APIs to the external world. Identify common scenarios in this regard and how to solve them
- Implementation of Oracle API Gateway (OAG) including creation of policies with different filters, OAuth authentication, LDAP configuration, REST/SOAP conversations and API deployment and testing
- Definition of an Oracle API management deployment topology
- Installation and configuration of Oracle API Catalog (OAC), Oracle API Manager (OAPIM) and Oracle API Gateway (OAG)
The book is now available for pre-order from the Packt website:
https://www.packtpub.com/application-development/oracle-api-management-12c-implementation
Converting ADLs to implement end to end JSON in SOA Suite 12.2.1 -PART I
But (as you probably already know) the adoption of web APIs hasn't stopped there. With the increased popularity of Microservice Architectures , initiatives such as Open Legacy , and node.js based frameworks like loopback and sails (to name a few), API-enabling system of records is becoming a lot easier.
This is putting a lot of pressure in software vendors to quickly modernise their integration suites to natively support the technology-stacks and patterns prevalent in these type of architectures. For example, if an organisations mobile application needs to interact with a system of record (on premise or the cloud) that already exposes a web API, the integration stack should be capable of supporting JSON over HTTP end-to-end without having to convert to XML back and forth. Not only is this impractical but introduces more processing burden to the core stack...
Luckily for many Oracle's customers and Oracle Fusion Middleware / Oracle PaaS practitioners like myself, with the latest release of Oracle SOA Suite (12.2.1) , one of the many new features introduced is the support for handing JSON end-to-end. I don't want to understate the importance of this as with such feature it is possible to use BPEL for example to orchestrate several APIs (all in native JSON and also in-memory with the new SOA in-memory feature) and therefore deliver coarse grained business APIs that actually perform.
For me this represents an important milestone for Oracle SOA Suite as it shows the departure from traditional SOA tech-stack and into SOA 2.0 (as I like to call it) as the suite is now better suited to support the adoption of ROA, microservices, IoT, and so on. Having worked with SOA Suite since 10.1.3.1 this is very exiting.
The catch
Unlike traditional SOAP services that make use of web service description language (WSDL) as the main mechanism to define a service interface (yes one can argue that there are different types like doc-literal, rpc-encoded and versions like 1.1, 2.0, broadly speaking they are similar and there is vast support for all of them), web APIs don't enjoy this mono-linguistic nature, in fact quite the opposite.
There is at least 8 different API description languages (ADL's) that am aware of. Some more popular than others but still in general all with substantial communities and vendor support:
Note: Suggest you go through this presentation for a good overview of the main ADL's
Oracle on the other hand didn't opt for endorsing or fully adopting any particular ADL. Instead it seems that conway's law came into action and different products currently support different ADLs.
Although I am sure that this inconsistency will go away in future releases, for us practitioners this sort of represents an immediate challenge. Even though all of the aforementioned do support REST/JSON in its purest sense, not being able to interpret an ADL automatically using an adapter basically means that one has to manually configure the URIs, resources, methods and parameters in a REST adapter in order to successfully consume the API.
Let's take for example the following Swagger ADL for the Oracle Field Service Cloud activities API (for which there isn't yet an out-of-the-box adapter in SOA Suite or ICS) :
https://apicatalog.oraclecloud.com/v1/services/oracle-public/ofsc-core/v1/apis/activities/canonical
If you clicked in the above you'll notice that tons of resources and methods are available (82 methods and 13 resources approximately). So imagine having to manually enter all of these in JDeveloper to configure the SOA Suite 12.2.1 REST adapter.. Yes possible but by any means practical. Far from it.
The solution
There is however a work around to this and its called API-Transformer
Developed by APIMATIC , API transformer is an online tool for converting ADL's and it supports the most popular formats (including all of the aforementioned ADLs):
Best of all is the fact that API transformer is also an API on its own right. Meaning that one could use this public API to build some sort of automation to facilitate the conversion between the Oracle supported formats.
Conclusions
APIs are great but the technologies and standards around it are still evolving. However the industry doesn't seem intimidated by this as the adoption of APIs continue to increase exponentially. Meaning that we practitioners are left having to deal with the complexity of adopting evolving paradigms without jeopardising the benefits that can be gained from their adoption. Luckily there are tons of open solutions out there that can be used to work around some of these complexities and API transformer is a good example of such.
In part II of this article I will show step by step how to consume an API defined in Swagger 2.0 from SOA Suite 12.2.1. For this I will transform the Swagger ADL to WADL, import it into a composite application using JDeveloper and the REST adapter and then implement end to end JSON to expose a generic API.
A Microservice Approach for Legacy Modernisation
Comparing Oracle ICS connectors with Workday, Mule, Boomi and Azure
The challenge is though, that organisations that don't carefully elaborate a cloud integration strategy and properly think this through, will almost certainly end up implementing point solutions using whichever iPaaS capability is available for the individual project. This not only results in vendor lock-in but also increases the complexity and cost of integration.
To avoid this, the first step is to of course create a carefully thought cloud integration strategy with a clear objective in mind. This should be delivering a platform capable of supporting all integration needs (cloud-to-cloud, cloud-to-on-premise) in a seamless and consistent fashion without redundant infrastructures and capabilities. The concept should be something like this:
However the devil is in the detail, or so it goes.
One of the key reasons vendor lock-in occurs is simply because of misinformation. From my point of view, SaaS integration is all about connectivity. So without properly understanding 1) what are the connectivity requirements and 2) what platform best fits these connectivity needs in the short and long term, there is high probability that a solution will not be the right one (may be it will solve the short-term needs, but in the long-run it will probably add more complexity, cost hence risk).
The following table compares Oracle's Integration Cloud Service (ICS) connectors to other major iPaaS vendors (or at least the ones I've come across recently). The table is specially useful if you're in an Oracle SaaS adoption project and want to explain/justify why using ICS will make life easier.
# | Connections | Oracle Integration Cloud | Workday Integration Cloud | Mulesoft Anypoint | Dell Boomi | Microsoft Azure Connectors |
1 | Adobe eSign (in Using the Adobe eSign Adapter) | Y | N | Y | N | N |
2 | Advanced Queuing (AQ) (in Using the Advanced Queuing (AQ) Adapter) | Y | N | N | N | N |
3 | Concur (in Using the Concur Adapter) | Y | N | Y | N | N |
4 | DocuSign (in Using the DocuSign Adapter) | Y | N | Y | N | N |
5 | Email (SMTP, POP3 or IMAP) | Y | N | Y | Y | Y |
6 | Eventbrite (in Using the Eventbrite Adapter) | Y | N | N | N | N |
7 | Evernote (in Using the Evernote Adapter) | Y | N | N | N | N |
8 | Facebook (in Using the Facebook Adapter) | Y | N | Y | N | N |
9 | File (in Using the File Adapter) | Y | N | Y | N | Y |
10 | FTP (in Using the FTP Adapter) | Y | N | Y | Y | Y |
11 | Gmail (in Using the Gmail Adapter) | Y | N | N | N | N |
12 | Google Calendar (in Using the Google Calendar Adapter) | Y | N | Y | Y | N |
13 | Google Task (in Using the Google Task Adapter) | Y | N | Y | Y | N |
14 | Integration Cloud Service Messaging | Y | N | N | N | N |
15 | JMS (in Using the JMS Adapter) | Y | N | Y | Y | N |
16 | LinkedIn (in Using the LinkedIn Adapter) | Y | N | Y | N | N |
17 | MailChimp (in Using the MailChimp Adapter) | Y | N | N | Y | N |
18 | Microsoft Calendar (in Using the Microsoft Calendar Adapter) | Y | N | Y | N | Y |
19 | Microsoft Contact (in Using the Microsoft Contact Adapter) | Y | N | Y | N | Y |
20 | Microsoft Email (in Using the Microsoft Email Adapter) | Y | N | Y | N | Y |
21 | Microsoft SQL Server (in Using the Microsoft SQL Server Adapter) | Y | N | Y | Y | Y |
22 | MS Dynamics (via REST or Native) | Y | N | Y | N | Y |
23 | MySQL (in Using the MySQL Adapter) | Y | N | Y | N | N |
24 | NetSuite Adapter Capabilities | Y | N | Y | Y | N |
25 | On-premise integration agent (not just an ESB onpremise) | Y | N | N | Y | N |
26 | Oracle Commerce Cloud (in Using the Oracle Commerce Adapter) | Y | N | N | N | N |
27 | Oracle CPQ Cloud Capabilities | Y | N | N | N | N |
28 | Oracle Database (in Using the Oracle Database Adapter) | Y | N | Y | Y | Y |
29 | Oracle E-Business Suite (in Using the Oracle E-Business Suite Adapter) | Y | N | Y | N | N |
30 | Oracle Eloqua Cloud | Y | N | N | N | N |
31 | Oracle ERP Cloud Capabilities | Y | N | Y | N | N |
32 | Oracle Field Service (in Using the Oracle Field Service Adapter) | Y | N | N | N | N |
33 | Oracle HCM Cloud (excluding Taleo) | Y | N | N | N | N |
34 | Oracle JD Edwards EnterpriseOne (in Using the JD Edwards EnterpriseOne Adapter) | Y | N | Y | N | N |
35 | Oracle Messaging Cloud Service | Y | N | N | N | N |
36 | Oracle RightNow Cloud | Y | N | Y | N | N |
37 | Oracle Sales Cloud | Y | N | N | N | N |
38 | Oracle Siebel (in Using the Oracle Siebel Adapter) | Y | N | Y | N | N |
39 | Oracle Taleo | Y | N | Y | Y | N |
40 | Responsys (in Using the Responsys Adapter) | Y | N | N | N | N |
41 | REST Adapter Capabilities (not just HTTP) | Y | Y | Y | N | N |
42 | Salesforce | Y | Y | Y | Y | Y |
43 | SAP (in Using the SAP Adapter) | Y | N | Y | Y | Y |
44 | SAP Ariba (in Using the SAP Ariba Adapter) | Y | N | Y | Y | N |
45 | SOAP Adapter Capabilities | Y | Y | Y | Y | Y |
46 | SurveyMonkey (in Using the SurveyMonkey Adapter) | Y | N | N | N | N |
47 | Twilio (in Using the Twilio Adapter) | Y | N | N | Y | Y |
48 | Twitter (in Using the Twitter Adapter) | Y | N | Y | N | Y |
49 | Workday (via REST or Native) | Y | Y | Y | N | N |
Below the sources of information I used in the comparison:
- Oracle ICS: https://docs.oracle.com/cloud/latest/intcs_gs/ICSUG/GUID-8BE53B5C-6436-4F81-AD20-78ECE5589BA9.htm#ICSUG-GUID-DDA9C4B9-BCB0-4F4D-BA51-44FB610AEA1C
- Dell Boomi:
- Apps: http://help.boomi.com/atomsphere/GUID-0D2151E2-918C-49E9-9221-D5F6858F10A5.html
- Tech: http://help.boomi.com/atomsphere/GUID-F0AECC3B-3DFD-467D-9D65-63EAADB2B81E.html
- On-premise: http://help.boomi.com/atomsphere/GUID-51F4C82C-974A-464D-AE6B-BBE264839AFE.html
- Workday Integration Cloud: http://www.workday.com/Documents/pdf/datasheets/datasheet-workday-cloud-connect.pdf
- Mulesoft CloudHub/ESB:
- Agents list: https://www.mulesoft.com/exchange
- Hybrid integration: https://www.mulesoft.com/resources/esb/hybrid-cloud-integration-solutions
- Microsoft Azure:
iPaaS. What is it exactly? is it on-premise software running on IaaS?
This is not surprising of course as the term 'cloud' itself can mean ten different things to ten different people. The sad part is though, that is has been years since the first wave of cloud (started by Amazon) and there's still a fair degree of confusion in the topic.
In fact, I still often refer to the NIST definition of cloud to explain what cloud computing and PaaS actually is and how traditional on-premises middleware installed on IaaS isn't PaaS or iPaaS. This is in fact one of the main motivators of this post.
iPaaS
The term Integration Platform as a Service, or just iPaaS, is generally used when referring to integration capabilities delivered entirely on PaaS cloud infrastructure.In terms of integration capabilities, iPaaS can deliver the same (and in many cases more) capabilities than the ones available in traditional on-premise middleware. Such capabilities should be sufficient to satisfy the main types of integration requirements:
![]() |
Types of Integrations |
Some for example wrongly believe that installing a traditional integration product (i.e. IBM BPM or Mule ESB) on IaaS infrastructure will make it iPaaS.
Well this is far from truth. Let me elaborate on why:
iPaaS characteristics
![]() |
iPaaS Characteristics |
- On-demand and self-service: it should be possible, at any given point in time, to go to a cloud vendor website (i.e. https://cloud.oracle.com/en_US/integration), browse through the different iPaaS offerings, select the one wanted/needed, purchase it online, using a credit card of course, and in minutes get an email with all details of the instance (already installed and running), how to access it and even use it. No need to talk with a sales representative, negotiate license costs, provision infrastructure, install/configure the software, and so on.
- Broad network access: This is perhaps one of the most important characteristic. Network connectivity to/from iPaaS to other applications has to be fast, reliable and secured. Open internet connection can be unpredictable therefore the cloud vendor must provide alternative means to deliver dedicated high-speed connectivity. For example Oracle Cloud provides a service called Fast Connect, and Amazon a similar one called Direct Connect.
- Resource pooling: Compute resources (i.e. cpu, ram memory, disk space) should be allocated on-demand (without human-intervention) based on resource utilisation or via configuration if desired. It should be possible to increase or reduce resources either on demand and/or based on pre-configured rules.
- Rapid elasticity: During periods of high demand (i.e. black Friday), predicting resource usage can be almost imposable. A true iPaaS platform should be able to autoscale based on configurable rules and resource demand. Idea is that transaction peaks can be handled by scaling horizontally or vertically -without human intervention. When transaction throughput becomes stable, platform resources should reduce automatically to its original size. It should not be the case that it's possible to rapidly add more capacity, but not the other way around...
- Measured service: pay-per-use / subscription-based charging model with complete transparency and visibility over usage and billing. For example, if a given iPaaS is charged based on number of connections to other applications, it should be possible to know exactly how many connections are being used -at any given point in time. If the number of connections is reaching the limit, a notification should be sent so it's possible to allocate more connections. If on the other hand, the number of connections is in average less than subscribed for, a notification should be sent suggesting to reduce the number of subscribed connections.
- Automatic application patching and upgrades: Although not explicitly mentioned, this is another key characteristic and possibly the one that makes iPaaS more distinctive from traditional on-premises middleware. Cloud vendors should be fully responsible for periodically applying patches and/or software upgrades to the purchased cloud infrastructure. It is the vendors responsibility to ensure that patches and upgrades applied are backward compatible and won't break any application.
iPaaS & on-premise integration platforms co-existance
![]() |
Hybrid Integration Patterns |
Conclusion
Oracle API Platform Cloud Service Overview
Here the official press release.
This new platform -not to be confused with Oracle's previous solution, has been built almost entirely from the ground up to satisfy modern API management requirements.
I have been lucky enough to be part of the beta programme and have actually been implementing the product for the last 4 months or so (but trying it for almost a year now). In this blog post I share some of the insight and experiences I've gained in the process.
What is the Oracle API Platform Cloud Service?
Is a 3rd generation API Platform that delivers a 'true hybrid' model that allows for APIs to be created, deployed and managed centrally (from the Oracle Cloud) whilst API gateways (engines that run the APIs) can be deployed in any cloud (i.e. Amazon, Azure, Oracle Cloud, IBM Softlayer/bluemix, etc) and/or on-premises.
In addition with the incorporation of Apiary into the portfolio, the platform also incorporates a solid/world-class API-first solution so developers also get the tools and means to properly design APIs either using Swagger or API blueprint (Apiary's own API design notation), whilst interacting with the API consumers and therefore ensuring that before any code is built, the API contract is fit-for-purpose.
API Platform Architecture
The platform consists of 7 key components as the diagram illustrates:
- Management service: The management service is the cloud-based system that underpins the management console, developer portal and platform API. It's the engine of the entire platform. The brains.
- Management Console: As the name suggests this is where APIs, Gateways and User/Roles are managed. It's a role-based application so what a user can do pretty much depends on the role the user belongs to.
- Developer Portal: A web-based application where developers can search and subscribe to APIs. This is where all of the API documentation can be found and also where application keys are provided after a subscription to an API takes place.
- Platform API: The entire platform was built following an API-first model. In fact, it can be argued that management service is in fact an API, as everything that can be done (and more) via the management and developer portals can be done by directly invoking the Platform API. The platform API is also consumed by the gateways when phoning home to retrieve new API's, policies and also send analytics information.
- Apiary: As previously mentioned, Apiary is a platform for designing APIs that encourages API designers to maintain an active dialogue with API consumers. Both the management and developer portals are already integrated with Apiary so when a user finds an API in the portal, the API specification (i.e. API blueprint) can also be accessed from one single place.
- API Gateways: These are the engines that run the APIs and can be deployed anywhere. In any vendor's cloud and/or on-premises. Gateways communicate to the management service iby making API calls (feature known as "phone home"). In this model, it's the gateways responsibility to establish the communication to the "mother ship" (management service) and not the other way around. Because of this, the management of gateways becomes a lot easier as there is no need to open firewall ports (i.e. opening firewall ports) as all communications are outbound triggered.
- Identity Cloud Service: Most organisations already have their own LDAP directory (i.e. MS Active Directory) where users and roles are managed. The Identity Cloud Service is used to allow the API platform to use an organisation's existing directory as the source for users and roles.
The platform by default support 5 types of roles.
- Administrator: Super user of the platform. Has all rights to deal with user settings and also create/manage APIs and configure gateways.
- Gateway manager: Role responsable for the gateway operations including deploying, registering, and managing gateways.
- API manager: The API implementers roles as it gives users full lifecycle rights, including design, create and deploy APIs and also manage the API grants.
- API designers: Individuals who take on a full or part-time responsibility (i.e. an architect or developer) to define APIs (either in swagger or API blueprints) using Apiary.
- Application developer: In other words, these are the API consumers. Users with this role can log into the portal and search/subscribe to APIs.
- Gateway runtime: Not really a user role, it's a service account used by the gateways to communicate with the to the management service via the platform API. Users assigned this role can’t sign into the Management Portal or the Developer Portal.
Tutorials and Presentations
As mentioned earlier, I've had the opportunity to use the Oracle API Platform for a while now. Below two insightful presentations based the experience implementing the platform:
API Management and Microservices, a Match Made in Heaven
Oracle Code: London, April 2017
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
PaaS Community Forum: Split, March 2017
Other related presentations:
Conclusions
Since I got my hands into this product, I have been really impressed with the elegant, simplistic yet powerful architecture of the Oracle API Platform. It's a considerable step forward from it's predecessor solution but most importantly it was built with modern requirements in mind -meaning that the product doesn't really have any major baggage.
The platform in addition to be lightweight does not enforced an API implementation path. Customers will not be locked into an end to end vendor-stack. For example when using the Oracle API Platform, API applications can be implemented using any technology of choice. This is ideal in microservice architectures where the majority of developers prefer a polyglot programming style. Other vendors for example will force you into a specific implementation path to implement, test and deploy your API applications -which results in vendor lock in.
Because gateways are also fairly lightweight (although I've already heard that future releases of the gateways will be even more lightweight), they really are microgateways and cannot be compared to the traditional appliance-centric, heavy-weight, second generation API platforms.
One more feature that really makes the product unique is the "phone-home" feature of the gateways. What it means is that gateways make a call to the management service to get all instructions regarding APIs to deploy and policies to apply. Meaning that more and more gateways can be added without the typical operations burden of opening firewall ports and troubleshooting failed deployments by looking at logs...
Lastly, the acquisition and incorporation of Apiary into the solution, truly is the icing on the cake! as the solution not only has a simple -yet robust runtime environment, but also a best-in-class API-first design capability.
Well done Vikas, Jakub, Darko, and Robert and the rest of the Oracle product development and engineering team for finally releasing a world-class future-ready API platform.