IBM i App Modernization: Expectation vs. Reality

IBM i applications are ubiquitous in the worldwide corporate infrastructure. Large numbers of the world’s leading corporations, including 70 percent of the Fortune 500, rely on this technology platform to maintain their operations. As IBM i infrastructure ages, it is commonly understood that application modernization may become necessary. Unfortunately, many managers are discouraged by their … …

Read More >

The post IBM i App Modernization: Expectation vs. Reality appeared first on Lansa.

The Need for Speed:Secure, High-Speed APIs for Your IBM i

“I feel the need, the need for speed” is not only a famous quote from Tom Cruise in the movie Top Gun but it also reflects the feelings of many IBM i users who are API enabling their applications. Whether they are adding new web or mobile user interfaces and must try to match the response time of their green screen applications or they need to rapidly process large volumes of incoming API traffic, it is critical that API execution is not slowing them down.

Since loading a webpage can often require multiple API calls and other processing, API experts say that each API call needs to be executed in milliseconds to provide acceptable user response. For large volumes of machine-to-machine requests, speed is even more important. If you can’t handle the load of incoming API requests, you may simply lose business.

To avoid frustrating your users and missing opportunities, your APIs must execute functions and relay data extremely rapidly. It’s not an easy task. The APIs must authenticate the users, determine what they are allowed to do, turn the API call into a program call or access to the database, transform the data from open formats to IBM i formats and perform business logic. Fortunately, there are great ways to optimize API performance on the IBM i.

The need to transform data from JSON, XML and other formats to IBM i data structures and field types can be one source of delay. Since an API roundtrip might include a transformation on the way in and another on the way out, you are paying this performance price twice. These transformations can be dramatically faster if done in JavaScript rather than in RPG. In one benchmark test we ran recently with a JSON transformation at a customer site, the JavaScript transformation was 20,000 times faster than a transformation performed with RPG. If you are processing a large volume of API requests, that difference can be significant.

Using the connection pooling functions of the IBM i ODBC connector can also speed up API processing. With connection pooling, API requests can be routed to an available connection rather than waiting for a previous request to complete. This allows you to handle many API requests simultaneously.

If you have very high volumes of API requests, you might want to add additional API servers to horizontally scale your API processing capacity. Load balancing functions can distribute the API traffic evenly across your servers. This is especially effective if you can run your APIs on low cost Windows or Linux servers attached to your IBM i. If those servers are on your internal network, the extra hop to your IBM i should not add much latency.

Using these techniques will ensure that the users accessing your APIs will get the rapid response they need. And your systems will be able to handle the growing volume of API requests.

If you would like to know more about ensuring your APIs are performing at top speed, contact us at Eradani. You can reach us through our website at www.eradani.com or via email at: [email protected].

The post The Need for Speed:<br>Secure, High-Speed APIs for Your IBM i appeared first on Eradani.

IBMi (AS400) fans only – A simple way to create table with Rpg Free & SQL embedded




Compile and Run this SQLRPGLE to create table CLANA00F, index CLANA01L and table OTORD00F, and populate:

      **free
      *****************************
      * create CLANA00F & OTORD00F
      *****************************
       ctl-opt option(*nodebugio) dftactgrp(*no) actgrp(*new);
        // The EXEC SQL is never executed. It is used at compile time.
        exec sql Set Option Commit = *None;
        // Create File
        exec sql
          CREATE or REPLACE TABLE myLib/CLANA00F (
          CLANN0 CHARACTER(01) NOT NULL WITH DEFAULT,
          CLCCL0 NUMERIC(7, 0) GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
          CLCIB0 CHARACTER(03) NOT NULL WITH DEFAULT,
          CLNOM0 CHARACTER(50) NOT NULL WITH DEFAULT
          )
          RCDFMT CLANA
          ;
        // Create index
        exec sql
          CREATE INDEX myLib/CLANA01L ON myLib/CLANA00F (CLCCL0 ASC);
        // Fill values
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES (‘EN ‘,’Rod Stewart’);
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES (‘EN ‘,’Bobby McFerrin’);
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES (‘IT ‘,’Adriano Celentano’);
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES (‘IT ‘,’Vasco Rossi’);
        // Create file
        exec sql
          CREATE or REPLACE TABLE myLib/OTORD00F (
          OTANN0 CHARACTER(01) NOT NULL WITH DEFAULT,
          OTCOR0 NUMERIC(7, 0) GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
          OTTIP0 CHARACTER(02) NOT NULL WITH DEFAULT,
          OTCCL0 NUMERIC(7, 0) NOT NULL WITH DEFAULT,
          OTDTA0 NUMERIC(6, 0) NOT NULL WITH DEFAULT,
          OTDTP0 NUMERIC(6, 0) NOT NULL WITH DEFAULT,
          OTCCM0 CHARACTER(06) NOT NULL WITH DEFAULT
          )
          RCDFMT OTORD
          ;
        // Fill values
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( ’10’, 1 , 190108 , 190114 , ‘101  ‘ );
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( ’10’, 2 , 190108 , 190112 , ‘103  ‘);
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( ’10’, 3 , 190112 , 190116 , ‘102  ‘);
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( ’10’, 4 , 190108 , 190121 , ‘102  ‘);
        *inlr = *on;

 

https://www.linkedin.com/in/aldosucci/

@adam_on_i Like everything, it’s another option for everyone. If Merlin isn’t the way, businesses will continue to roll their own (which you and I both know lots of people do) but Merlin will help solve some integration problems and will absolutely encourage modern development, which I love

@adam_on_i Like everything, it’s another option for everyone. If Merlin isn’t the way, businesses will continue to roll their own (which you and I both know lots of people do) but Merlin will help solve some integration problems and will absolutely encourage modern development, which I love

– Liam barry (@notesofbarry) (in reply to notesofbarry)07:03 – Jun 02, 2022

Verified by MonsterInsights