Application modernization for business agility
- 작성자 Park Sung Hoon
Due to the progress in cloud technology, many companies are currently in the process of moving their existing legacy systems to cloud-based platforms. The advancement in container technology has accelerated the procedures involved in developing and deploying applications, making it accessible even to individuals without a specialized background. We will look at cases of application modernization that leverage container technology
Advancements in container technology essential for cloud migration
Due to the progress in cloud technology, many companies are currently in the process of moving their existing legacy systems to cloud-based platforms. When we look back, the new elements and changes were not always good. However, we should adapt to these changes to embrace new lifestyles and respond to future changes by moving forward. The advancement in container technology has accelerated the procedures involved in developing and deploying applications, making it accessible even to individuals without a specialized background. We will look at cases of application modernization that leverage container technology
[Wait!] What is the container technology?
The container technology is one of the virtualization technologies used to run software. A container is a light virtualization unit that enables execution of more than one process in an isolated environment.
The concept of application modernization
Businesses related to application modernization have been booming these days. The definition of application modernization does not simply mean modernization in application architecture design. Applications must include the company’s business, which is related to the organization’s decision-making structure. This is because the decision-making structure of an organization defines how the system looks.
"Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization's communication structure" - Melvin Conway, from his thesis in 1967
[Wait!] What is application modernization?
Application modernization refers to updating previous legacy systems to the latest technologies and architectures or optimizing conventional business processes by developing new applications in a modern way.
Modernizing applications assist companies in addressing evolving business needs. To achieve this, application modernization employs the following approaches.
1. Cloud native: Building applications designed for cloud deployment allows harnessing the flexibility and scalability offered by the cloud environment.
2. DevOps: This approach integrates development and operations for developers and operation teams so that they can collaborate for continuous improvement and the deployment of applications.
3. Microservices architecture: This is an architectural approach that involves dividing large applications into smaller units. This helps developers achieve the scalability and flexibility needed to create sophisticated applications.
4. Container technology: This is a technology that packages and runs applications, which enhances the portability and scalability of the applications.
By modernizing applications using these approaches, companies can become more responsive to business requirements, achieve greater flexibility, and ultimately deliver high-quality applications.
The evolution of application creation and deployment methods due to advancements in container technology
The architecture of the application has undergone significant changes. The development of container technology has led to changes and advancements in how applications are created and deployed. Scaling up becomes easier when each individual application is well-established and capable of running independently. Many domestic and international companies have already adapted to the container-based environment. This means the environment has changed into cloud native infrastructure and serves customers with business applications on cloud platforms, such as AWS.
[Wait!] What is the cloud native?
Cloud native means that all installations and configurations of systems and applications are configured in the cloud environment.
To establish a cloud native application, the following characteristics are required:
- Containerization: Packages applications as containers for easy deployment and management.
- Microservices architecture: Divides an application into small units of services, developing and deploying each service independently.
- Automation: Automates processes including CI/CD, provisioning, and configuration for efficient development and operation process.
- Scalability: Uses scalability of the cloud to quickly expand or reduce applications.
- Service mesh: Manages communications among services in microservices architectures.
Cloud native applications are developed using the most of cloud properties, enabling establishment of more flexible, scalable applications compared to ones built in conventional, on-premise environments. This allows both developers and operations teams to work more quickly in developing and deploying applications, ultimately leading to improved efficiency and competitiveness for the company.
The issues with business applications
However, applications directly connected to the business environment still have a conventional monolithic architecture, and they are not migrated into cloud native architecture (due to the failed source code refactoring). Thus, application modernization must be accompanied to migrate into a cloud native system for “business agility.” Now, we will look at strategies for application modernization, focusing on both case studies and technological aspects.
Application modernization case study - Airline A
The flexibility of the business system enables successful transition from a passenger plane to a cargo plane
Samsung SDS has been analyzing Airline A for application modernization since the end of 2021. Here are some of the technological concerns, excluding various conflicts of interest in the business. Airline A was the only carrier in the world to run a surplus during the COVID-19 pandemic. The key to its surplus was a simple strategy: Converting passenger flights into cargo flights. This was especially possible thanks to the flexibility of loading management system. More than 150 airline systems were interconnected like a spider web and closely connected to various domestic and international organizations and companies. The system that backs up the business helped transform passenger planes into cargo planes rapidly. The independently developed system proved its value.
Complex issues that still need to be addressed
The aviation industry is still faced with many challenges as it struggles to survive in the face of COVID-19 and stay competitive in the post-pandemic era. A variety of challenges are ahead, including how to change deep-rooted corporate culture, improve the outdated system, and reinforce technical capabilities of personnel in system development/operation. These complicated issues can be summarized into three types:
- Improvement of organizational culture (collaboration between the business and IT organization)
- Modernization of old system structure
- Reinforcement of digital capabilities of employees
This article shares the content about "modernization of old system structure."
Strategies for application modernization
Definition of the rehost, replatform, and refactor strategies
First, we need to limit the scope of system modernization. We may consider rehosting, replatforming, and refactoring strategies as an option. As I mentioned before, many companies have already opted for replatforming for migration. Rehosting refers to simply migrating the existing application to a cloud environment without any change. Replatforming means containerizing an application on cloud infrastructure and migrating it without modifying it. The last strategy is refactoring, which replatforms the application after reorganization and improvement. Next, a detailed execution strategy for application modernization is required. The detailed execution strategy for application modernization can be divided into three stages
Three stages of execution strategy for application modernization
Stage 1: Advance identification of risk factors and establishment of strategy
First, identify priorities when there are many target systems. You would identify risk factors in advance and set up an appropriate strategy accordingly by analyzing which system is subject to application modernization among dozens of systems and how much effort (labor and material costs) is needed.
Stage 2: Establishment of individual strategy according to the possibility of rebuilding
Second, choose the target for microservice after analyzing the target for reusing or rebuilding given the system characteristics. Development strategies are set up individually after distinguishing which system is reusable from which one is not, among dozens of systems. For source code related to display (UI) and DB programs, most are targets for rebuilding, and for source code developed in back-end Java language, class, method, and specific modules, are partially targets for reuse. Systems where microservices can be developed are chosen separately and a Microservice Architecture (MSA) configuration strategy is set up.
[Wait!] What is the microservice architecture?
Microservice architecture (MSA) refers to a service-based architecture where an application is divided into small, independent units in the cloud. Each microservice performs a certain function and configures the whole application by collaborating with other microservices.
The key idea of MSA is to replace monolithic architecture, divide applications into small units of services, and help develop, deploy, and operate each service individually. This enables developers to manage code changes in a small unit only, enhancing maintenance and development productivity of applications.
In addition, MSA plays an important role in increasing the availability and scalability of applications. Each microservice is independently developed, deployed, and operated, which means it is scalable in the unit of service.
MSA is more important in the cloud environment. The cloud offers an environment where services are easily deployed and resources are efficiently used, so MSA architecture is being actively used.
Stage 3: Completion of a platform where services are combined to create a new business service
Last, build a platform where new business services can be created by registering and sharing microservices and combining these services. This means building an API hub system where users can register and share their APIs to interconnect and combine microservices, as well as establishing a service catalog to create new business services. We need a technological strategy to implement this three-step “execution strategy for application modernization.”
The higher the priority of quantitative indices and qualitative indices are, the more important the business values and system properties are.APAM (Application Portfolio Analysis Method)
- Quantitative indicators
- Impact of failure
- Number of interfaces
- Number of programs
- Qualitative indicators
- Estimated development period
- Business importance
- 1 for Microsoft.NET
- 5 for E-Government framework (Spring)
- 10 for Struts
- 1 for C programming language
- 5 for Spring Boot
- 1 for PL/SQL
- Approx. 10 for Spring
- 1 for JSP
- 25 for Java
- 3 for HTML
- 3 for C programming language
- 18 for C#
- 22 for ASP
- 1 for Android (Java)
- 22 for .NET Framework
You can check technology types and five-year refactor transition methods.Application Migration Strategy (Re‐factor)
- Aglle Methodology
- Development Framework
- Executable Framework
- Global Standard
- Talent Transformation
- Service Catalog
- Composable Applications
Execution strategy for application modernization
Technology strategy for application modernization
There are mainly four important considerations in technology strategy for application modernization:
1. Application modernization (AM) assessment, 2. Cloud native architecture, 3. Composable application, and 4. Site reliability engineering (SRE).
Let’s take a look at cloud native architecture and composable applications among them.
- Application Re‐use, Re‐build (Composable Application)
Architecture standard (cloud native architecture)
Technical guide (composable application)
Installation/Operation automation (SRC)
Cloud Native Architecture
Cloud native means that all installations and configurations of systems and applications are based on the cloud. In the industry, cloud native means “microservices,” “container,” and “DevOps.” It means building a systemically connected and working system where containers, microservices, and a DevOps are available on the cloud.
Containers are used as a de facto standard as the technology improves. There are many cases of switching the past VM environments into containers. Of course, containers on VMs or using them both are common rather than only using a single technology, either VM or container. Amazon, one of the leading cloud companies specialized for container technology, announced AWS Fargate at AWS re:Invent 2017. AWS Fargate is a fully managed service provided by AWS to manage burdensome issues, such as creating and managing containers. Users can only focus on application content, networking, and storage management without paying attention to provisions, patch updates, cluster capacity, infrastructure management, etc. The service proposes a platform for companies to reduce the effort in managing the IT environment and focus on business. The container includes business applications or is a business application itself.
Host Operating System
- Guest OS
- Guest OS
- Guest OS
- App 1
- Host Operating System
- App 1
- Docker Engine
- Operating System
VM vs Container
Scheduling and Orchestration
- Cluster Manager
- Placement Engine
- Scheduling and Orchestration
- ECS agent
- Docker agent
- ECS AMI
Scheduling and Orchestration
- Cluster Manager
- Placement Engine
- Scheduling and Orchestration
- ECS Task
Source: http://www.opennaru.com/kubernetes/cloud-native-computing-foundation-cncf AWS Fargate
Most of the target applications for application modernization have monolithic architecture. It is not that the monolithic architecture has problems. Monolithic systems have many features in a single application due to their structural characteristic. From the business perspective, it is not easy to modify a specific feature. In other words, it is difficult to reflect business requirements immediately. From a technical standpoint, it takes a lot of time to operate or stop a container when migrating the existing environment to a container because the container is too large. As an alternative, microservice is gaining popularity. The key to microservice development is to split monolithic applications into units running individually. However, splitting an application containing decades of business data might lead to various problems. It is desirable to discuss and collaborate with the person in charge of tasks before splitting the service if it is found to be critical for the business. Microservice structure applications clearly have advantages in terms of business agility, compared to traditional monolithic applications. In business, it implements services with smaller application units, more functional cohesion, and less coupling to decrease the burden of modifying certain parts and distributing, which leads to a relatively faster responses to business changes. Without the aforementioned progress in container technology, we might have followed the hard work of service-oriented architecture again. Fortunately, the technological environment to run microservices has definitely improved from the past.
[Wait!] What is the monolithic architecture?
Monolithic architecture is one of the conventional software development methods, which includes all functions in a single application. Such an application consists of one code base, sharing resources, such as database or libraries.
Monolithic architecture is relatively simple to develop and deploy, allowing easy operation and management with high productivity. In addition, it is easy to maintain consistency since all applications are modified and deployed at once.
However, monolithic architecture has its disadvantages in that its complexity increases as the scale of applications expands. Modifying and deploying many code at once means small changes can cause huge impact on the whole system. Moreover, it is not easy to scale, and flexibility and scalability are restricted in single application including all functions.
Therefore, distributed system architecture, such as microservice architection is mainly used, instead of monolithic architecture today.
API First Design
- This project has got so big, i'm not sure i'll be albe to deliver it!
- Micro Service
- it's so much better delivering this project in bite-sized sections
Source: https://happy-coding-day.tistory.com/94 monolithic vs microservices
3) API First Design
We often face concerns over developing microservices. In general, a back-end program is developed to create an API, and front-end developers refer to the back-end APIs to develop the display (UI). A back-end program is an implementation of business logic using programming languages, such as Java, and a front-end program is the implementation of the user interface. The project proceeds by repeating the procedure above which means developing a front-end program after developing a back-end program. However, this method is cumbersome as front-end developers always have to wait for back-end programs to be developed before they start their work. That is caused by the difference in development timeline. When part of the back-end source code has changed, the front-end source code also has to be changed. So, it is cumbersome work. How can we solve these issues? The solution is API-first design. When the back-end developers define the API, we can create a mock version to show the results. Front-end developers can use the mock version to test the back-end program's APIs. Back-end developers register a mock API to communicate with front-end developers. Google’s “Apigee” is a case in point that realizes API-first design.
4) Service catalog
The service catalog is a type of service marketplace where individually running microservices are registered to provide services for various businesses. You can create a new service by combining registered services. Even though it looks somewhat ideal, developing applications with this goal in mind could be great for business and technological maturity. For example, suppose airline services including ticket sale/ticketing, duty-free, in-flight meal, and ticket reservation are registered as an independent service in the service catalog. An organization or company that needs the services can use the registered services or combine such services to create new airline services. The concept of creating a new business application by combining well-made services is in line with the composable applications concept presented recently in Gartner. Now, let’s get a detailed view of composable applications.
API hub (compose API) and service catalog (create biz service) can be combined to make new services.Service catalog
|Load Service||Gov. I/F Service||Custom Service|
|여객 탑재 서비스||KCUS 연동 서비스||적하목록 서비스|
|화물 탑재 서비스||관세청 연동 서비스||보세창고 서비스|
|C.G 서비스||공항공사 연동 서비스||통관 상태 제공 서비스|
Gartner 2022 strategic technology trend, composable applications
Recently, Gartner announced 12 strategic technology trends for 2022. Of course, things do not always come true as Gartner predicted. However, there is a need to pay attention to the topics related to our work. Among the topics presented, the cloud native platform is growing and becoming mature at an unprecedented pace. Cloud services that used to be focused on IaaS is now expanding its scope into PaaS and Saas with more enhanced technological maturity. There have been many changes in application architectures and companies are increasingly seek ways to build new application architecture in the form of microservices.
The concept of composable applications
Composable applications presented by “Gartner” seem to have a more advanced concept. Composable applications contain all features that businesses require by creating a new business application after combining different microservices if needed
For example, when we travel abroad, we buy flight tickets, check in for a flight, purchase duty-free products after boarding, or have in-flight meals. Airlines have to provide all these services without any complaints from the passengers. From a system perspective, those services can be classified as individual services, including ticket sales/ticketing, duty-free sales, in-flight meals, and flight ticket reservation services, or can be merged into airline services. In other words, small services running individually, including “ticket sales/ticketing service,” can be combined to create a mixture of services called “airline services.” Small services that can operate independently (sales/ticketing service) is called a “microservice,” while the combination of services (airline services) is called a “composable application.” There is no doubt that an ideal application would be created if it was designed and implemented as explained above. Clearly, it is uneasy to design and implement applications with this architecture as imagined. However, I believe we can build the best designs and cases for achieving business agility if we continue to plan and design applications to realize this concept.
- Data Fabric
- Composable Applications
- Distributed Enterprise
- Cybersecurity Mesh
- Decision Intelligence
- Total Experience
- Privacy–Enhancing Computation
- Autonomic Systems
- Cloud–Native Platforms
- AI Egineering
- Generative AI
- Business Model
- Value Propostion
- Business Capanilities
- Operating Model
- Value Streams
- Business Capanilities
There are four design principles and components of packaged business capabilities (PBC)
Packaged business capabilities are encapsulated software components that represent a well-defined business capability, recognizable as such by a business user and packaged for programmatic access.
Closing: Application modernization brings huge changes for corporate structure, culture, and technologies
Application modernization accompanies huge changes to the company, from the organizational structure to culture and technologies. If application modernization does not satisfy a variety of stakeholders' views and fail to make progress in business, it is not different from simply changing the programming language or migrating a system. It is nothing but repetitive labor.
Application modernization should be thoroughly considered given it would be detrimental to the company’s survival unless the modernized application creates business values.
Check out the cloud container products on
Samsung Cloud Platform for application modernization which is critical for the survival of companies.
Standard Kubernetes cluster creation and container deployment
- Park Sung Hoon / Samsung SDS
- In charge of MSA exclusion/design/construction work and mainly participate in internal and external system construction projects. We are conducting activities such as external T2 MSP overview lectures, architect dates, and technician mentoring. Although it is small, we are sharing and communicating with the IT environment that allows us to use our personal homepage, hoony.com.