APIs are the abstractions over technical services. Good APIs mirror strategic thinking in an organisation and lead to better customer experience by enabling high-degree of connectivity via secure mechanisms Too much focus is on writing protocols & semantics with the desire to design good APIs and too little on business objectives. Not enough questions are…More
A Pandemic, Open APIs and Citizen Science: Its 2020 baby!
Human societies have been hit by pandemics through the ages and relied on the central governing authorities to manage the crisis and disseminate information. I believe this time around with COVID-19, our societies have access to more information from our governments because we have the internet If this pandemic is an evolutionary challenge, then our…More
Coordinating Distributed Software: Choreography vs Orchestration
There are 2 ways of coordinating distributed systems and services to achieve an end-to-end outcome More
Observability in distributed systems: Monitoring, Logging, Auditing and Historical analysis
“Knowing the quality of your services at any given moment in time before your customers do and using this information to continuously improve customer experience is part of modern software delivery and critical to the success of organisations” In this post, we present why it is important to observe and manage our systems and solutions proactively and…More
History of web services: Monolith to Microservices
If you have struggled with decisions when designing APIs or Microservices – it is best to take a step back and look at how we got here. It helps not only renew our appreciation for the rapid changes we have seen over the past 10-20 years but also puts into perspective why we do what…More
De-mystifying the Enterprise Application Integration (EAI) landscape: Actors, terminology, cadence and protocols
Any form of Enterprise Application Integration (EAI) [1] work for data synchronization, digital transformation or customer self-service web implementation involves communication between the service providers and service consumers. A web of connections grows over time between systems, facilitated by tools specialising in “system-integration”; this article covers how the clients, services and integration tools communicate and…More
Tackling complexity: Using Process maps to improve visibility of integrated system features
“Entropy always increases “– second law of thermodynamics Enterprise systems are similar to isolated physical systems, where the entropy or hidden-information always increases. As the business grows, our technology footprint grows as new systems are implemented, new products and cross-functional features are imagined and an amazing network of integrations emerge Knowing how information flows and…More
Raspberry Pi Setup – Part II: IoT API Platform
Intro This is the second part in a series of posts on setting up a Raspberry Pi to fully utilize the Software & Hardware functionality of this platform to build interesting internet of things (IOT) applications. Part-I is here https://techiecook.wordpress.com/2016/10/10/raspberry-pi-ssh-headless-access-from-mac-and-installing-node-processing/ … this covered the following: Enable SSH service on the Pi Connect to Pi without a display or router –…More
Raspberry Pi Setup – Part I : Boot, SSH and Headless access
Intro Part I : Documenting the workflow/steps to setup my Raspberry Pi (2 B) – from Installing Raspbian to installing Node, Processing etc Goals: Enable SSH service on the Pi Connect to Pi without a display or router – headless access via Mac Steps Install Raspbian Boot your Pi Setup SSH Connect to Mac Troubleshoot Connection to Mac…More
Complex Form Evaluation with Drools
Introduction Complex business rules are best implemented using a ‘Rules Engine’. Drools is an open source Business Rules Management Product. See here In this blog we will cover a few basics of using the Drools rule engine, specifically using a Domain Specific Language (DSL) which is a language that is more user focused. The…More
Design-first API Contracts: Key to accelerating Integration and Improving API Quality
Service specifications along with developer documentation are key to turning your APIs into products. A well written and standards based API contract can not only make it faster and easier to integrate but also to test and deliver a solution faster Good API contracts help improve key software delivery metrics such as lead time through…More
Systems Integration Design: Picking the right patterns and building a robust solutions
Systems Integration is key to building good distributed solutions as software modules are spread across network within and outside the organisation. Knowing where we are building a solution, the key requirements for interaction, data, consistency etc can help pick the right integration patterns Here is my list of what I look for when integrating systems…More
Camunda BPM – Manual Retry
The Camunda BPM is a lightweight, opensource BPM platform (See here: https://camunda.com/bpm/features). The “Cockpit” application within Camunda is the admin dashboard where deployed processes can viewed at a glance and details of running processes are displayed by the process instance ids. Clicking on a process instance id reveals runtime details while the process is running – process variables,…More
Microservices with Docker and Spring Boot
This guide is for someone interesting in quickly building a micro-service using the Spring Boot framework. Works great if you have prior JAX-RS / Jersey experience Step-by-step guide Add the steps involved: Create a Maven Project Final Structure Pom ( Attached here ) Include Spring Boot Dependencies in your pom Parent Project <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>…More
Java Application Memory Usage and Analysis
The Java Virtual Machine (JVM) runs standalone applications and many key enterprise applications like monolithic application servers, API Gateways and microservices. Understanding an tuning an application begins with understanding the technology running it. Here is a quick overview of the JVM Memory management JVM Memory: Stack and Heap form the memory used by a Java Application The…More
Dockerized Java Application Performance Analysis
Using JMX to analyse a Java Virtual Machine (JVM) within a local or remote docker image. The example below explores how to analyse a Tomcat Server (version 7) running in a docker instance using Oracle JRockit Mission Control (JMC) Your JRockit Mission Control is here OSX : “/Library/Java/JavaVirtualMachines/{JDK}/Contents/Home/bin/” Windows: “JDK_HOME/bin/” Step-by-step guide Add the…More
API Performance Testing with Gatling
The Problem “Our API Gateway is falling over and we expect a 6-fold increase in our client base and a 10-fold increase in requests, our backend service is scaling and performing well. Please help us understand and fix the API Gateway” Tasks It was pretty clear we had to run a series of performance tests simulating…More
Groovy Grape Turns Sour – java.lang.RuntimeException: Error grabbing Grapes — [download failed:
Issue: Trying to run a Ratpack Groovy code [ @Grab(‘io.ratpack:ratpack-groovy:1.0.0’) ] groovy -Dgroovy.grape.report.downloads=true -Dratpack.port=8081 server.groovy The Error: General Error: java.lang.RuntimeException: Error grabbing Grapes — [download failed: Specific Error: java.lang.RuntimeException: Error grabbing Grapes — [download failed: org.yaml#snakeyaml;1.12!snakeyaml.jar(bundle), download failed: com.google.guava#guava;18.0!guava.jar(bundle)] The fix: Delete the Repository folders in repo managers like Maven. Why? Because the ~/.groovy/grapes repo…More
Oracle AS Adapter for Peoplesoft: IWAY Error Resolution
ERROR com.ibi.bse.ConfigWorker:java.lang.NoClassDefFoundError: oracle/tip/adapter/api/exception/PCResourceException Solution: It appears that Oracle took the IWay Servlet and built a Java Swing application around it that allows you to create a Web service (BSE) or J2CA based connection to the Enterprise Applications (SEIBEL, JDE, Peoplesoft). This Swing application is launched in a Unix/Linux shell using the iwae.sh script and in…More
Oracle SOA Suite 11g BPEL – FTP Adapter: What’s my filename?
I was writing an FTP adapter for a client recently for a legacy integration project, when a couple of requirements came up: 1) When reading the file from a remote location, the client wanted to use the filename as a data element. 2) When writing the file to a remote location, the client wanted the…More