Wednesday, 24 August 2016

Comparing Oracle ICS connectors with Workday, Mule, Boomi and Azure

As SaaS adoption continue to increase in organisations of any size, it's only expected that different cloud vendors will stretch their cloud capabilities to try and increase their SaaS/PaaS/IaaS footprints in a clients landscape. This is particularly true for iPaaS related capabilities, as it seems that every cloud vendor has its own related offering and they are pushing it really hard to customers even if there really isn't a one to one fit.

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:

Saturday, 4 June 2016

A Microservice Approach for Legacy Modernisation

Very large portion of the world’s business critical systems are considered to be ‘legacy’ –and so is the code underpinning them (ie COBOL, PASCAL, C, to name a few).  Although in many cases it is the case that these systems are robust, stable and fit for the main purpose they were originally built, they aren’t flexible and scalable enough to support emerging requirements mainly derived from a more demanding ‘always on the move’ and ‘always connected’ user.

These systems struggle to meet these demands mainly because of the ‘monolithic’ approach on which they were built and the complexity hidden in millions of lines of code that is only understood a very few hand-full of people that still remain active from the teams that several years ago developed these systems.

In almost an equal amount there have also been thousands of failed attempts to modernise these legacy systems. The ‘eating the elephant’ in one go approach certainly didn’t work, and the traditional SOA approach alone although worked till certain extend, it also fell short when it came down to addressing specific requirements around scalability and platform/service inter-dependencies.

In this presentation I talk about how a legacy modernisation framework based on Microservice Architecture (MSA) in conjunction with some other known SOA patterns (ie. ESB, API Gateway), can be applied to ‘eat the elephant one piece at the time’ but most importantly ‘without getting indigestion’.



I did this presentation at the AMIS Beyond the Horizon conference that took place near Amsterdam in June 2-3 2016. Thank you AMIS and Oracle ACE Director Lucas Jellema for the opportunity to present in what was a very unique and wonderful conference full of great people, knowledge and fun!

Friday, 13 May 2016

Converting ADLs to implement end to end JSON in SOA Suite 12.2.1 -PART I

There is no doubt that web [Rest] APIs have become extremely popular and its usage has gone well beyond just building APIs in support of mobile apps. We can see the adoption of resource-oriented architectures (ROA) by probably all SaaS vendors who provide out-of-the-box APIs as the means to connect and interact with their cloud applications. Take for example the Oracle Cloud. To discover and consume publicly available Oracle SaaS APIs, all one need to do is browse the Oracle API Catalog Cloud Service (which is publicly accessible) and just select the Swagger definition for any given API.


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.

Sunday, 23 August 2015

Oracle API Management Implementation 12c Book Overview

Digital transformation is at the core of every business strategy regardless of what type of business an organisation is in. Companies that embark on a on a digital transformation journey are able to create innovative and disruptive solutions that are capable of delivering a much richer, unified and personalised user experience, at a lower cost. They are able to engage the customer in a seamless fashion through many channels such as mobile apps, responsive websites and social media. Organisations that adopt innovative digital business models gain considerable competitive advantage over those that don’t.

Why transform digital?

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.

Why API Management

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.

API Management

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.

Application Services Governance

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
API Management Strategy

  • Product evaluation and selection explaining why Oracle is the answer
APIM ProductSelection
  • API management implementation roadmap
API Management Implementation
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.

API Management Reference Architecture

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 target audience for the book is Enterprise Architects, Solution Architects, Technical Architects and SOA and API consultants who want to successfully implement API Management using the Oracle API Management Solution products.

The book is now available for pre-order from the Packt website:
https://www.packtpub.com/application-development/oracle-api-management-12c-implementation

Tuesday, 18 August 2015

Installing MAF 2.1.2 and MCS Lab Utility on Mac (OS X Yosemite 10.10.4)

During the OFM Summer Camp for Mobile Cloud Service (MCS) it was all going very smooth. In fact too good!! until I had to set up MAF 2.1.2 in JDevleoper and configure the utility provided in the lab (maf-mcs-utility-2.1.3.1.4). At this point nothing worked…The fact that I use Mac didn’t make things easier either as most people were on Windows and the lab sort of assumed the same….. So after at least 6 hours banging my head against the wall I finally found a solution.

Word of Caution
I initially tried to make this work in an existing Jdeveloper 12.1.3 soaquickstart installation. I tried to set up MAF 2.1.2 in this environment (following the docs steps) and it got to the point that I was getting all sort of weird errors (many related to MDS not loading and others around compilation). So at this point I decided to do a full clean install of everything (including Java).
Below the steps:

Preparation:
  1. Uninstall JDK 1.8 or JRE 1.8 (if you don’t have a JDK installed yet) by following these instructions
    1. JDK uninstalling steps: https://docs.oracle.com/javase/8/docs/technotes/guides/install/macjdk.html#A1096903
    2. JRE uninstalling steps: https://www.java.com/en/download/help/macuninstalljava.xml
  2. Download JDK 1.7 from: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
  3. Download JDK 1.8 (for later use) from: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  4. Download JDeveloper 12.1.3 from: http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
  5. Install Xcode from https://developer.apple.com/xcode/
    1. If Xcode is already installed make sure SDK is installed by clicking on Xcode Menu > Preferences > Download
    2. If no simulator is installed, click on the latest simulator to install it
Installation:
  1. Double click on jdk-7uxx-macosx-x64.dmg to install JDK 1.7
    1. Open a command prompt and check that it was properly installed by running java -version
  2. Open a command prompt and change directory to the folder where jdevsuite121300.jar was downloaded to.
    1. Then execute: java -jar jdevsuite121300.jar
    2. Follow steps as indicated. Make sure to take note of the Oracle inventory and Oracle home paths as you might need them later
    3. Also if you’re planning to run different installations of Jdeveloper, use a distinctive Oracle home (i.e. fmw1213-maf212)
  3. Open Jdeveloper and click on the menu Help > Check for Updates
  4. Tick on “Official Oracle Extensions and Updates” and click Next
  5. Tick on “Mobile Application Framework” then click Next
  6. Click on “I Agree” then click Next and finish
  7. Don’t restart JDevleper when prompt. Instead close it
  8. Now install JDK 1.8 by double clicking on jdk-8u51-macosx-x64.dmg
  9. Open Jdeveloper
  10. 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
  11. 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
  12. Go to http://docs.oracle.com/cd/E6577401/tutorials/tutmcsbasic/tutmcsbasic2.html and click on “Downloads” to get file labfiles.zip.
  13. Unzip labfile.zip
  14. Open Jdeveloper (if not already opened)
  15. Using Jdeveloper open file <path where unzipped>/maf-mcs-utility-2.1.3.1.4/PublicSample/mafmcsUtilitySample.jws
  16. Click on the menu Jdeveloper > Preferences and then Mobile Application Framework > iOS Platform
    1. 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
  17. Click on menu Run Click on menu Build > Clean all
  18. Right click on ViewController and then click Run > iOS Simulator
  19. 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)
Lastly for instructions on how to set up the MAF Samsung emulator on Mac follow these instructions: http://docs.oracle.com/middleware/maf212/mobile/install/mafig_setup.htm#MAFIG164