Tuesday, October 11, 2016

API Gateways



In this, the last of this little set of Blogs,  we'll talk about API Gateways

We have talked about Citizen Developers and RMAD Tools.  These processes, tools and people use API Gateways - but what services do these tools provide


this brings us almost immediately to a 'microservices conversation'  so let's talk about that for a minute .
We've seen many large and unwieldy SOA projects which have large goals.  Microservices approaches the same end goals as SOA , although from a different route.   Wikipedia says it very well indeed
'The philosophy of the microservices architecture essentially equals to the Unix philosophy of "Do one thing and do it well"' ( e.g. tools like grep, sed, - and pipeline them together ) 
https://en.wikipedia.org/wiki/Microservices

Some of the goals of Microservices

  • The services are small - fine-grained to perform a single function.
  • The organization culture should embrace automation of deployment and testing. This eases the burden on management and operations.
  • The culture and design principles should embrace failure and faults, similar to anti-fragile systems.
  • Each service is elastic, resilient, composable, minimal, and complete.


So in order to take advantage of Microservices we need tools that allow for them to be assembled into functionality.  Typically microservices are exposed as REpresentational State Transfer (REST) services returning JavaScript Object Notation (JSON)  

One class of tools that provides these services is known as an API Gateway 

What kind of functionality does a typical API Gateway provide 

There are two main types 
  • Functional enablement
  • Non-functional enablement. 
For Functional enablement, we are talking about assembling Microservices from other Microservices - so, for example, if we had to get a customer balance from one system(microservice), and a customer name and address from another (microsystem) , another Microsystem might be an aggregation of the two - this would be a functional difference that the Gateway might provide. 

For Non-functional requirements can can provide services that the Microservice may not be set up or even designed to handle, yet are necessary. 

For example : 
  • Throttling ( avoid too many requests to a microservice ) 
  • Developer enablement/Customer enablement ( API Keys to provide security )
  • Transport Level Security (TLS1.2 Endpoints ) 
  • Load Balancing 
  • Billing (in a service economy, more and more APIs are being charged for ) 


API Gateways are an important field 

What does the market look like 
You have the traditional vendors like Oracle who have a strong offering,  but in addition you have the main PAAS vendors - for example 




As more and more services are assembled from heterogenous cloud services these products will become super-critical in businesses' journey to the Cloud

Version1's experience is that these products will be critical and key. 

EU Cyber Security Directive 2016/1148/EU



For most people EU regulations can be a good cure for insomnia . However just recently directive 1148 was ratified which deals with Cyber Security
Directive Link

For the first time it places the onus on Member states to identify Essential Services ( Electricity, Air, water, rail etc ) and ensure that they have specific measures in place to mitigate against Cyber Attack

"Member States shall ensure that operators of essential services take appropriate and proportionate technical and organisational measures to manage the risks posed to the security of network and information systems which they use in  their operations. Having regard to the state of the art, those measures shall ensure a level of security of network and information systems appropriate to the risk posed. "

For other organizations like search engines an onus is placed on them to work in an "Entire Union" approach.

The Department of Communications notes that

"
Directive 2016/1148/EU will have direct implications for many firms and utilities in the State. Many of these firms and utilities are to be designated as 'operators of essential services' with security obligations and incident reporting requirements binding on them.  These will include:

electricity, gas and oil companies
airlines, shipping firms, ports and airports
rail and road authorities, traffic management authorities
banks, other credit institutions, some financial intermediaries
hospitals and clinics
water distribution and Internet based companies
This Directive will also result in Ireland having to regulate particular multinational corporations who have their European headquarters based in Ireland and provide digital services in Europe. These digital services are online/ecommerce marketplaces, online search engines and cloud computing services.
"
http://www.dccae.gov.ie/communications/en-ie/Internet-Policy/Pages/Directive-Implications.aspx




Rapid Mobile Application Development and Oracle MAX



In my previous post I discussed the rise of the Citizen Developer. The tools they use, though, cannot be code-oriented; they have to offer quick applications that meet the business need.

Most applications developed now, are either "Mobile-First", or "Mobile Only"

This plus the needs of the Citizen Developer has given rise to a class of tools known as Rapid Mobile Application Development or, RMAD  for short

( Sometimes also known as "Low-Code" )

So we have a couple of goals


  • Develop "Good Enough" applications rapidly
  • increase the pool of people who can develop for mobile 

So what does an RMAD Tool look like . Oracle offer a really compelling set of Mobile Cloud services, under the banner of Oracle Mobile Cloud Service (MCS)  and one component of this is the Oracle Mobile Application Accelerator - known as Oracle MAX


MCS lets you publish a structured set of REST services, which you can then leverage in MAX> 

MAX Requires no Code, and is developed entirely in the browser ; no Java, No javascript, No Objective-C , just drag and drop, and map services to forms 

This enables all of what we want to do as a Citizen Developer; when the time comes for deployment we can scan a QR Code on our phone and be up and running in seconds - no worrying about supporting infrastructure,  cross-platform development ( Max works for Android and IPhone ) and IT is reassured because they know you are only using the services they have provided through MCS or another API Gateway

We will talk some more in the later post about API Managers 

Here is a link to Oracle MAX Max Information and here is some  documentation on MCS https://cloud.oracle.com/en_US/opc/mobile/features


Thanks ! 

Chris 


Rapid Mobile Application Development and the rise of the Citizen Developer



As I work for a busy IT Services company we see projects after projects being done at our clients, and the users and IT department expected to provide applications, functionality and APIs to support an ever-more rapid business change.

At the moment we are seeing a strong drive towards

API Management,  RMAD , and Citizen Developers,

I will touch on the first two in the following posts but for now I want to talk about Citizen Developers



Citizen developers refers to users ( Not IT staff )  who creates applications.   This means that of and by their very nature they are not your average developer or IT administrator - and so they will have a very different outlook on what they are trying to do.  We have all seen the people who do all their work through Excel or home-grown Microsoft Access databases - these people are trying to solve a real business problem.  

Citizen developer attempts to mitigate some of this issue  by giving the users the right tools to do their job  

Gartner defines it as "citizen developer is a user who creates new business applications for consumption by others using development and runtime environments sanctioned by corporate IT."

On first examination this looks a little like "Excel for everyone" or, worse "Everybody needs to learn Python"  - not, of course, to disparage either of those fine products. 

The key difference here is providing a scalable, proper, infrastructure, and a system of tools that the Citizen Developers can actually use and be productive with. 

This will normally be some type of API Manager/API Repository exposing structured JSON-based REST Services  ( e.g. AWS API Gateway,  Mashery, Apigee ) 

So they would be the services the Citizen developers would use.  But in order for the Citizen Developers to produce we must consider what they will develop in. 

What goals are we looking to fulfil

Well -
  • they need to be rapidly productive, 
  • They should NOT learn to code - remember they are not  IT folk 
  • Probably need to deal with channels beyond the traditional ( Mobile, Social ) 
  • they will likely be eager to deliver the process they own as an application or service 
This then tends to drive towards a rapid application development model using simple components that can be enhanced, as needed. 

What are the benefits : 
  • Functionality is delivered faster , exactly as the end user wants and can  be  easily refined
  • IT know that end users are delivering services from a curated, managed set of APIs ( no holes in the  wall ) 
  • Projects happen faster as the users develop and test themselves

In the next blog we will be discussing these toolsets, and mentioning a particular class , RMAD or Rapid Mobile Application Development, and showing some examples. 

Until then

Chris 





Friday, September 23, 2016

Upgrading Linux - rhn-client-tools and oraclelinux-release conflict - /etc/pki/rpm-gpg/RPM-GPG-KEY etc




this is because both packages are trying to do the same thing with regard to the key.

Solution

:

Update oraclelinux

[root@CSLFEB16R2 ~]# yum upgrade oraclelinux-release
Setting up Upgrade Process
Resolving Dependencies
--> Running transaction check
---> Package oraclelinux-release.x86_64 6:6Server-4.0.4 will be updated
---> Package oraclelinux-release.x86_64 6:6Server-7.0.6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================
 Package                              Arch                    Version                          Repository                   Size
=================================================================================================================================
Updating:
 oraclelinux-release                  x86_64                  6:6Server-7.0.6                  ol6_latest                   23 k

Transaction Summary
=================================================================================================================================
Upgrade       1 Package(s)

Total download size: 23 k
Is this ok [y/N]: y
Downloading Packages:
oraclelinux-release-6Server-7.0.6.x86_64.rpm                                                              |  23 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
** Found 4 pre-existing rpmdb problem(s), 'yum check' output follows:
glibc-headers-2.12-1.107.el6_4.4.x86_64 has missing requires of kernel-headers
glibc-headers-2.12-1.107.el6_4.4.x86_64 has missing requires of kernel-headers >= ('0', '2.2.1', None)
oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 has missing requires of kernel-uek
oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64 has missing requires of kernel-uek
  Updating   : 6:oraclelinux-release-6Server-7.0.6.x86_64                                                                    1/2
  Cleanup    : 6:oraclelinux-release-6Server-4.0.4.x86_64                                                                    2/2
  Verifying  : 6:oraclelinux-release-6Server-7.0.6.x86_64                                                                    1/2
  Verifying  : 6:oraclelinux-release-6Server-4.0.4.x86_64                                                                    2/2

Updated:
  oraclelinux-release.x86_64 6:6Server-7.0.6

Complete!
[root@CSLFEB16R2 ~]# yum -y install rhn-client-tools
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rhn-client-tools.noarch 0:1.0.0.1-4.0.1.el6 will be updated
---> Package rhn-client-tools.noarch 0:1.0.0.1-32.0.4.el6 will be an update
--> Processing Dependency: rhnlib >= 2.5.22-13 for package: rhn-client-tools-1.0.0.1-32.0.4.el6.noarch
--> Running transaction check
---> Package rhnlib.noarch 0:2.5.22-12.0.2.el6 will be updated
---> Package rhnlib.noarch 0:2.5.22-15.0.2.el6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================
 Package                           Arch                    Version                             Repository                   Size
=================================================================================================================================
Updating:
 rhn-client-tools                  noarch                  1.0.0.1-32.0.4.el6                  ol6_latest                  503 k
Updating for dependencies:
 rhnlib                            noarch                  2.5.22-15.0.2.el6                   ol6_latest                   67 k

Transaction Summary
=================================================================================================================================
Upgrade       2 Package(s)

Total size: 571 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : rhnlib-2.5.22-15.0.2.el6.noarch                                                                               1/4
  Updating   : rhn-client-tools-1.0.0.1-32.0.4.el6.noarch                                                                    2/4
warning: /etc/yum.repos.d/public-yum-ol6.repo created as /etc/yum.repos.d/public-yum-ol6.repo.rpmnew
  Cleanup    : rhn-client-tools-1.0.0.1-4.0.1.el6.noarch                                                                     3/4
  Cleanup    : rhnlib-2.5.22-12.0.2.el6.noarch                                                                               4/4
  Verifying  : rhnlib-2.5.22-15.0.2.el6.noarch                                                                               1/4
  Verifying  : rhn-client-tools-1.0.0.1-32.0.4.el6.noarch                                                                    2/4
  Verifying  : rhnlib-2.5.22-12.0.2.el6.noarch                                                                               3/4
  Verifying  : rhn-client-tools-1.0.0.1-4.0.1.el6.noarch                                                                     4/4

Updated:
  rhn-client-tools.noarch 0:1.0.0.1-32.0.4.el6

Dependency Updated:
  rhnlib.noarch 0:2.5.22-15.0.2.el6

Complete!
[root@CSLFEB16R2 ~]#

Displaying Wallet Contents with ORAPKI



With most versions of ORAPKI It is difficult to display full certificate details.

The easiest way I have found of doing this is to export the Cert to a file and then use ORAPKI cert display.

Converting Oracle Wallet to SSO

If you have ewallet.p12 and want to convert to CWALLET.SSO

/u02/app/Oracle/webtier/oracle_common/bin/orapki wallet create -wallet $PWD -auto_login -pwd WALLETPASS

Oracle PKI Tool : Version 11.1.1.7.0
Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.


Use ORAPKI to gen it.  No parameters are required, it will automatically name it CWALLET.SSO


rw------- 1 uatwls oinstall 13792 Dec 22 16:10 ewallet.p12
-rw------- 1 uatwls oinstall 13869 Dec 22 16:21 cwallet.sso