“But this worked in my environment” … “I tested this I swear” … “You sure it is my code?” These are typical responses you hear from developers when something goes wrong in production. There really isn’t anything anyone can do besides either debugging directly in production, or rolling back and planning a new release cycle.
Here are common problems that can cause instability in the production environments:
1. Environment inconsistencies between Dev/Test, UAT, Perf and Prod. Testing is performed in an environment which did not mimic the production environment.
2. Deployment of packages and configuration parameters are considered as two separate steps in the deployment process. If you don’t configure the parameters properly, the services might point to an undesired non-prod environment.
3. Service dependencies can cause microservices to behave unexpectedly because an external environment is slow and/or down.
These issues generally go in the Non-functional requirements bucket. They cause unexpected and random behavior and need a lot of man-hours to pinpoint the root cause. On the other hand, function requirements—or business requirements—are easy to test and are generally caught in the UAT phase. Let’s have a look at how TIBCO’s BusinessWorks Container Edition can help avoid these issues and help you provide a robust, scalable, and resilient production environment.
BusinessWorks Container Edition (BWCE) is a peer offering to TIBCO’s flagship BusinessWorks Integration platform. You can think of BWCE as BusinessWorks on steroids. It has all the capabilities that makes BW the leading integration platform, and it is designed to run and natively leverage all the capabilities of the PaaS environment. BWCE currently supports AWS EC2, Google Kubernetes, Microsoft Azure Container Service, Pivotal Cloud Foundry, as well as any platform which supports Docker.
To build your project and deploy it to the PaaS environment using BWCE is simple:
-Build your integration flow in a zero code, drag and drop, eclipse based environment
-Generate the project ear file (CI/CD can automate this step)
-Deploy the ear to your choice of PaaS platform
The ear file generated in Step 2 is PaaS agnostic. You do not need to recreate your project if you decide to change your PaaS platform. The deployment package (ear file) recognizes the destination platform and connects automatically to PaaS’s run time frameworks to execute the integration processes.
Here is a snapshot of a microservice which implements a search flight REST process:
As you can see, there is no code required to build the process. All the complexity of integration logic, data mapping, error handling etc. is built using a visual model. This takes you much closer to solving the business problem at hand, rather than solving Java, C#, Pearl, Ruby, or, to put simply, programming problems. Your business requirements (the functional requirements) can now be mapped directly to a “picture” rather than thousands of lines of code.
Once you deploy BWCE projects (which contains artifacts like the picture above) to a PaaS platform of your choice, BWCE leverages all the features of that platform:
-It integrates with the configuration management of the PaaS platform to externalize parameters in your integration project
-It can leverage PaaS’s circuit breaker frameworks to detect problems and execute its own self-healing processes
-It integrates with PaaS’s APIs to scale services across containers
-It integrates its own logs in the PaaS’s log stream.
Non-functional requirements like uptime, scalability, log management, configuration management, and service discovery are now delivered as part of the integrated BWCE + PaaS platform—the PaaS platform will guarantee consistent environments across Dev, UAT, Staging, and Production—and BWCE will run natively in that environment to scale services, tokenize config parameters, provide service discovery capabilities, and sense and execute self-healing processes using circuit breaker type frameworks. Non-functional requirements are no longer an afterthought, they are part of the runtime environment provided by BWCE and PaaS of your choice.
BusinessWorks Container Edition is moving toward a simpler and unified management and administration model. Non-functional requirements are now managed by BWCE and the PaaS platform of your choice. Using the integrated capabilities of this platform, applications behaviors are 100% predictable across your environments, allowing developers to focus on business requirements rather than runtime environment.
Want to try BusinessWorks Container Edition for yourself? Find more BWCE information and get a free trial.