As the app economy grows, there’s a sense of urgency to create business value and drive mobility and agility. These digital opportunities to deliver value are massive, urging enterprises to develop applications with greater momentum. Technology is the primary enabler in enterprise-wide modernization, and the demand for developers to support this transformation is huge–and this is where the challenge of the looming skills gap emerges.
The 2018 LinkedIn Workforce Report stated that there is a shortage of 212,838 people in the U.S. with software development skills, including programming languages such as C++ and Java. In the developers market, it is easier to find developers proficient in one programming language than full-stack developers experienced in end-to-end application development. This is because traditional Java development teams depend on specialists, decelerating the application development process.
What Java teams are missing is access to consumer-grade UI that provides a conversational user experience, the ability to create multichannel responsive apps, API-driven integration for microservices and REST APIs, and agile DevOps to automate, iterate and deliver rapidly.
Here’s where low-code platforms play an important role. Gartner Research predicts that by 2024, about two-thirds of application development activity will be done using low-code application development. This is because these platforms are widely used to help create agile teams, reduce dependency on specialized skills and empower Java development teams to develop future-proof skills using a modern technology stack.
In addition to developer-heavy initiatives such as app transformation and migration, low-code platforms can empower developers and make full-stack development simpler and faster in a variety of ways. Here are some examples, offered as industry information from app dev platform maker Wavemaker.
Creating enterprise applications that have a rich user interface (UI) and responsive user experience (UX) requires time, effort, and specialized skills. Traditional teams require highly skilled front-end technologists with knowledge of HTML5, Bootstrap, Angular, and UI design.
Low-code platforms, however, provide drag-and-drop features, out-of-the-box Angular-based responsive UI and modern UI frameworks such as Angular 7. Utilizing a radical approach to use open-standards-based generated code, the code for every drag-and-drop action is automatically generated. Through this method, low-code platforms enable developers to build modern applications with minimal coding and guarantee the best code quality, maintainability, and extensibility of enterprise applications.
Creating APIs from existing applications requires skilled Java and API developers to develop new database logic and coding, but there’s an easier solution. Low-code platforms provide one-click API creation, where microservices are auto-created and developers can use existing database logic, reuse existing Java code and create new Java code in IDEs of their choice, such as Eclipse.
Using an API-driven app development and integration approach, microservices are created and REST APIs are automatically generated for existing applications, making modernization of legacy systems easier and faster than ever before.
Developers, in addition to understanding all layers of the application stack for full-stack development, are required to deal with the underlying complexity of integrating, configuring, and developing for the various systems and frameworks involved in the end-to-end application development process. This includes UI, binding UI to back-end data sources, security configuration, API integration and creation, database logic, microservices, CI/CD, multi-cloud deployments and much more. Full-stack development becomes very complex for developers as they need to upskill.
Low-code platforms can abstract the complexity by providing accelerators across the life cycle of full-stack application development. Using low-code platforms, developers can own micro-functionality (also known as microservices) and can manage end-to-end application development from UI design, focused code development (avoiding any infrastructure code) to deployment, in a simplistic manner.
Today, enterprises are leveraging hybrid infrastructure models (on-premises and multi-cloud) and distributed app architectures such as microservices and APIs. As traditional virtual machine (VM) pipelines are script-driven, repurposing and rebuilding them at scale is not an easy task. As a result, developers need to create deployment scripts to deploy apps to application servers and create CI/CD Git hooks for continuous delivery.
With low-code platforms that support continuous integration and continuous delivery (CI/CD), developers can instead deploy application artifacts (WAR files) to any Java application server. By supporting VM-based deployments and containers, deploying on-premises or in multi-cloud environments is made easier than ever before. As container images are automatically generated by integrating with existing enterprise CI tools like Jenkins, low-code platforms democratize the delivery process through seamless deployment to Kubernetes and auto-containerization.
Migrating to modern applications can be expensive and require extensive coding. With the assistance of visual development features in low-code platforms, it’s easier to migrate from legacy applications based on proprietary technologies such as Lotus Notes, MS Access, and Oracle Forms.
With the app economy maturing, enterprise application development is becoming more sophisticated. While there is an increasing demand for a highly skilled developer workforce, there is a talent shortage and skills gap in the developers market, and the extent to which enterprises upskill their development teams will determine the survival, revival, and arrival of developers. Using the right tools such as low-code platforms, Java development teams can be empowered to focus more on innovation and address the demands of the modern enterprise. Enterprises that modernize and upskill existing development teams can future-proof the next-gen developer workforce and gain a competitive edge.
“Change before you have to.” This quote by Jack Welch, Former CEO, General Electric has never had greater significance than today. Everything is constantly changing, from the expectations of digital customers, the requirement for better user experiences by the next-gen workforce, changing business models according to business needs, to the modernization of technology, before it becomes inevitable.
Consider this example. A health-information and intelligence company in Stamford, Connecticut built a ‘health intelligence platform’ to create their labs’ competitive difference. The platform built years ago had advanced from enabling clients’ lab operations to creating an impact on lab research outcomes. While the software developed 2 decades ago was robust, there was an imminent need for modernization.
From the VP of tech engineering to the lab head, there were change agents or champions who recognized this need for modernization. However other stakeholders, comfortable using the old system, were apprehensive to move to new systems. In due course, the company embraced modernization and upgraded from a legacy, FoxPro-based Lab Information Management software (LIS) to a modern Java/Angular application.
By using a low-code platform, they were able to accelerate application development, automate ordered tests, simplify integration with external systems, and develop applications quickly and economically. This accelerated their time-to-market - a necessary competitive edge, where the extent of technology leverage could make the difference between invention and discovery. Taking this example, we will discuss the approach and the steps that every change agent should consider when embarking on the modernization journey.
Modernization is not only about scaling or ramping up software technology, it also requires an enterprise-wide change in mindset. A change in mindset in the way people work, collaborate and communicate with each other and with the technology they use. What most enterprises are facing today seems to be an impasse. On one hand, business owners feel that the use of technology is limited to the support they get from IT and on the other hand, there are tech owners who do not have the time or the skills to deliver more. When IT teams are overloaded with enterprise demands, the bandwidth for core business innovation is minimal.
For decades, enterprise-class systems have had a monolithic approach. Enterprise architecture has evolved from monolithic models to service-oriented architecture and is progressively moving towards microservices architecture. The role of enterprise architecture has also matured, from supporting IT to a strategic role of innovation.
Enterprises can stay competitive by incrementally transforming monolithic legacy systems to adopting a modern, agile approach such as microservices. Once they experience the agile delivery of microservices, innovation will naturally flow. Any change agent will tell you, undertaking an IT modernization initiative is not an easy feat and the first question that invariably arises is “how and where to start?”
In any migration or modernization project, making enterprise-wide changes all at once is not always feasible, as it would involve intense coordination and meticulous planning. Moreover, modernization requires investment in emerging technologies, therefore big budgets need to be approved and allocated. The first step in IT modernization is not to make a mountain of the existing monolithic system. If new functionalities need to be added to the software, adding them to the legacy system is only going to make the migration process more difficult. Instead, build independently deliverable services, microservices.
5 Aspects to Consider When Migrating to Microservices
Here is an approach with 5 steps that every change agent in an enterprise should consider when they begin their journey of modernization to microservices.
APIs are used to integrate components (third-party and internal) and the model used will determine the business profitability. Generating APIs for a new service or reusing code of existing services that invariably use legacy technology can be challenging. The pace at which APIs need to be generated is something most enterprises are grappling with.
In the earlier example, the health IT company had to build APIs over databases and custom services. Using a platform to integrate external EHR (electronic health record) systems and enable building a database of patient health records, a unified API helped them access data and run queries.
To improve productivity, low-code platforms are used to auto-generate APIs, where it is not limited to simple, database CRUD operations, but also the generation of APIs for search, filter, aggregate and export services, among others. APIs can be built over databases and for custom services and can also be generated for database queries with stored procedures. Using the ‘API designers’ feature in a low-code platform, REST APIs are generated automatically for every service imported into an application, be it a Database Service or Java Service.
Low-code platforms also offer the advantage of writing business logic by reusing generated APIs in popular languages like Java. When enterprises are in a position where they are still using legacy technology like JSF, Struts, JSP or Servlet where Java code is used, low-code makes it possible to extract the code and generate APIs from it. There are different ways in which a low-code platform can help in reusing code to generate APIs, either by obtaining the libraries of the code and wrapping it in a service or copying the code in a service. Moreover, since development teams would probably be using Java, reusing code and generating APIs becomes very easy.
When it comes to migrating the most valuable asset, which is data, the challenge of “data gravity” arises. Over time, as data grows, how it attracts other data, how it is integrated and how it is customized, changes. Data migration not only has to be done with speed to avoid disruption, it also has to be done accurately and securely.
When migrating to microservices, all of the data from storage systems have to migrate from a monolithic solution. However, at the time of migration, the data itself is not accessible directly.
To make data available across microservices, frequent data migration routines or a synchronization process needs to be created and these datasets need to be made available as APIs. In the earlier example, daily schedules for data migration and syncing were created to ensure access to near real-time data and minimal process disruption for users.
There are several on-premise, open-source, and cloud-based data migration tools. From on-premise data migration tools such as Centerprise Data Integrator, IBM InfoSphere, Informatica PowerCenter, Microsoft SQL, Oracle Data Service Integrator and Talend, to open source tools like Apache NiFi, CloverETL, Myddleware, and Pentaho, to cloud-based tools such as Alooma, Fivetran, Matillion, Snaplogic, and Stitch Data. These tools can provide simple data migration and repeatability.
Low-code platforms simplify and accelerate the entire data migration process securely. They make it easy to integrate anything from databases to third-party libraries and deliver seamless experiences with offline data access and synchronization.
Nothing compares to a user-friendly application to demonstrate its value. When using apps, the user interface (UI) is what delivers the experience for users. By creating ‘beautiful looking’ UIs, it is easier to get stakeholders to understand the value that an enterprise application can deliver.
Imagine you could provide users with better usability by providing a web application instead of a desktop application. What if you could create a modern UI that displays information and encourages interaction, something that was not possible until now. What if you can enable your users to use the functionality of modern applications through their mobile phones, on-the-go.
And what if you can build predictions and forecasts based on data and showcase it using powerful dashboards to stakeholders.
Modern, low-code tools have made it easy to create simple UI applications. With drag-and-drop features and limitless customization that low-code platforms offer, developers can create aesthetic UIs to deliver pixel-perfect application designs, at scale.
When migrating to microservice architecture, the best way to start is to break down the monolith into manageable chunks. The best approach would be to pick microservices out of the existing monolith one service at a time. Once the first service is up and running out of the monolith, this will give insights into how to create more microservices.
Once a service is taken out of the monolith, identify more uses cases that can be pulled out of the existing application. Identifiable services could range from managing new customer orders, self-service applications providing customer information to a new payment service, basically, those services that can be managed as separate microservices.
The whole point of selecting one microservice at a time is to measure value and improvement. When choosing a service to be migrated or modernized, it is best to choose a high-value service, or a service that requires frequent change but not delivered as frequently, or one that can demonstrate visible visual improvement to stakeholders. Before creating a baseline to measure the effectiveness of change, make sure you gather relevant numbers such as the number of releases, amount of delivery and delivery time.
What microservices provide is a software component model that helps to future-proof systems against the changing business needs. Microservices works best when multiple teams are working in coordination to run a complex network of systems that require evolving applications. When applications and systems become complex and large enough to be broken down into separate services adopting microservices architecture is beneficial.
Make Migration to Microservices Meaningful
Inspire Innovation and Confront Change
Monolithic legacy systems cannot be transformed overnight. To migrate from monolithic systems and efficiently create enterprise-class microservices, a low-code approach has proven to be the most effective. Low-code platforms provide the ability to develop custom software stacks, deploy API-driven microservices-based applications and orchestrate IT infrastructure effectively. In this app economy, using an ‘API-first’ strategy with microservices architecture works great because it enables enterprises to focus on delivering value and accelerating innovation on a massive scale.
Look at microservices through a macro lens to understand how enterprises can use modern approaches such as low-code to rapidly respond to evolving demands. With composable architecture based on microservices, APIs, reusable components and containerization, low-code platforms empower enterprises to rapidly develop and deploy modern and cloud-native applications with agility, scalability, and simplicity.
Migration to modern technology is a major change for many enterprises, technologically and culturally. What low-code platforms provide is a catalyst that change agents can use to showcase the value of microservices to other stakeholders. Because modernization of legacy systems and migration to modern technologies is going to be inevitable, eventually.
There is a new sense of urgency in modern enterprises, to drive mobility and agility, and to deliver more, faster. The expectation from modern-day application development revolves around delivering quick and agile releases, multi-channel applications, availability, and scalability.
The formula for quick release is quick development along with continuous integration and delivery. Quick releases = Quick development + CI/CD
Quick Development is where Low-Code Development vendors are providing superpowers to accelerate development and delivery. CI/CD challenges are already addressed to a great extent. Docker, Kubernetes on the cloud, and other CI tools can be configured with Jenkins to achieve integration and delivery. Considered to be a standard in the industry, most companies are already using CI tools and low-code to drive quick releases of applications with agility.
The underlying challenge is that majority of the vendors are BPM (Business Process Management) vendors who generate applications originally created for business users. As complete application development is not feasible without IT, BPM vendors are calling themselves low-code platforms. The applications they develop are an afterthought and are invariably reflected in the quality and maintainability of the application.
BPM modified solutions are not bendable
BPM tools primarily cater to BPM types of applications and other facilities are normally added as an afterthought. By using tools to quickly generate process-based applications, technical business users and citizen developers fall short of taking application development all the way. Typically standalone applications, core business applications, mobile applications, dashboards, API mashup applications, and chatbots are not optimized by the tools provided by BPM vendors.
The challenges professionals developers face when using BPM tools
Professional developers are a different breed compared to citizen developers. While business users can create intricate wireframe diagrams, not many are proficient in understanding the code that goes behind a single box in a diagram. The task of wiring code into wireframes can only be performed with the help of professional developers and their role typically involves (not limited to):
When using custom BPM tools, professional developers face several challenges. They are unable to follow the popular agile methodology in the same way. BPM tools typically use complicated and proprietary technology and are based on older UI technologies like JSP/JSF, making it difficult for professional developers to work with. Moreover, BPM applications are not normally based on modern, microservice architecture, making multi-channel delivery a challenge. Added to this, professional developers are unable to use their favorite IDE, which can be demotivating and constrictive to the value they would like to bring.
Supporting professional developers may seem to be an ordeal, although that’s a price worth paying for high-quality, enterprise application development. Fortunately, low-code tools have proven to take the load off professional developers by doing the heavy lifting and enabling them to deliver more with less.
Taking app development all the way. How low-code empowers professional developers
Rapid application development platforms are designed to provide a frictionless environment for professional developers to learn and evolve. Low-code platforms compared to BPM tools, help professional developers meet their expectations from the development process. Expectations such as:
Rapid Application Development and low-code Platforms help produce ready-to-deploy applications. Combining code generation features with an integrated development environment (IDE), low-code includes the entire application technology stack, UI, middle-tier, and back-end. Here are examples of how low-code platforms development provides accelerators for development and delivery instead of imposing new practices:
There is a change in the pace of enterprise demands and delivery. With a critical need for rapid application development, more often than not BPM vendors are mistaken for low-code platform providers. Choosing the right Low code Platform could ensure you empower professional developers to deliver more, deliver fast, and deliver better. Because enterprise application development is more than an afterthought.