In this article, the first one in the series about Application Migration and Modernization topic, I’ll walk you through the design steps, technical choices, and some caveats and expectations of application migration to the public cloud, which involves a significant cloud migration strategy and application modernization plan, and some of the trade-offs and issues associated with this approach.

Introduction

I will demonstrate this process based on the existing business goals, the characteristics of the architecture, and the functional and non-functional goals the architecture must meet. Particular emphasis will be placed on cloud migration and application modernization that goes well beyond traditional lift and shift approaches. And it goes even beyond standard cloud migration and application modernization patterns, including lift and shift and PaaS cloud migration process.

While the article is heavily focused on technical performance, it will also make assumptions about business factors, which will be discussed in the following article in the series about Application Migration and Modernization. To make the piece more attractive, I use a real-life example.

Airline Rewards App: Mapping requirements to architecture for application migration and modernization

Architectural considerations for an Airline Rewards application modernization

The application covered here and used as an example is an airline rewards and loyalty application. Its current form consists of a few simple web pages that allow users to see past flights, acquired miles, segments, current reward status, and benefits and to manage simple profile information such as name and address. Airline employees can drive employee and customer accounts, edit miles and segment history, and finally, the application provides a redemption store. The application is only accessible via web pages; no mobile application exists.

The airline has a grand vision of massively expanding this project, including:

  • the ability to show upcoming flights,
  • an option to cancel and book flights via rewards,
  • integration with partner airlines,
  • a mobile application, the desire to integrate email and SMS notifications,
  • the ability to manage payment information,
  • the statistics around travel history,
  • the ability to gamify flight history and upgrade requests.

From our previous session, we can make some assumptions about our vision. We are taking a monolithic application and migrating it to a microservices serverless platform from an older monolithic platform to solve a number of considerations as described below. Though there is nothing inherently wrong with the monolithic application as it stands today, there are requirements better met by the new architecture. As the application is due for a significant number of feature additions, the timing is good to make these changes.

Challenges with monolithic architecture: complexity and scalability of cloud migration process

The existing architecture utilizes an arguably modern monolithic approach, an MVC (model view-control) framework, and a simple database back end. Though there is nothing wrong with that approach, it does require that any changes to any services be well understood by the majority of the development team. As they roll out more migration services and new feature additions, the team size will expand to help maintain those additions. The number of features and the internal complexity of each has and will continue to grow beyond the capacity of any one individual to understand, facilitating the need for a non-monolithic model completely.
The below diagram represents the existing architecture at a high level. Note that there is considerably more complexity within the code base if the individual URL paths and API entry points were to be mapped out, along with the various framework interactions and dependencies. For brevity, we will exclude these frames from the existing application but will showcase them in later articles.
The architecture is simple: two primary virtual machines running in an HA (highly available) pair, with a traffic load balancer between them. No session sharing is enabled so that active sessions would lose information in flight, and hotspots (“unbalanceness”) could occur in a cloud environment.

Figure 1: HLD (High-Level Architecture Diagram) of existing application

Application Migration and Modernization. Airline Rewards App: HDL of existing application

Capturing technical and business requirements for a complex User Management System

From our previous discovery steps we can categorize several captured requirements. Some of these may be technical in nature, and some of these may be business motivations. Together these will define our future solution and proposed architecture.
Given the nature of the application, there are numerous persona’s that need to be dealt with, which include significantly different permissions and views of the application. Although some of these can be grouped together in terms of general permissions – eg, customers/family groups, all agents, benefits employees and administrators, each will require its own complex permission handling and views. This will require a complex user management system capable of defining such roles and access policies.

Table 1: Users Personas & Cohorts

 PersonaDefinition
 Airline customersAirline’s end customers, the ones buying tickets and participating in the loyalty rewards program.
 Family groupsInterconnected groups of customers within the same household who accumulate and share benefits as a group.
 Corporate agentsCorporate employees responsible for some or all bookings of 1 or more individual customers.
 Travel agentsA single or group of users who can book and then make changes those bookings for one or multiple customers at once.
 Airline agentsInternal agents, who can make changes to any booking for any customer.
 Benefits employeeInternal employees who can change rewards, redemptions, and modify account history but not modify or create bookings.
 Application administratorsInternal employees have control to modify all credential accounts: internal and external, including other administrators.

Technical requirements and feature characteristics for Airline Platform

The platform requirements for a new application involve several key features that are essential for modern cloud platform and its success:

  • the platform must allow for fast prototyping and deployment of new page functionality
  • the platform must allow for duplicating behavior between web and mobile applications without complete rewrites
  • all pages must be API driven and able to load data from multiple internal and external sources
  • updates to one API platform (eg, flight bookings) should be possible without affecting teams working in other areas (eg, benefits)
  • the platform must utilize off-the-shelf solutions for common denominator features (eg, user management, page rendering, API’s) where appropriate, in order to cut down on developer burden, and maintenance
  • there does not need to be a shared repository of data; communications between features (eg, bookings vs. rewards) will be via API’s, not direct access
  • the platform must have the ability to easily send SMS and email notifications, as well as application push notifications (eg, flight rescheduled)
  • the platform must be designed with the ability to store and utilize credit card information, and the associated PCI compliance impact
  • the platform must support robust business intelligence and statistic visualizations
  • allow for complex data lifecycle management rules, as data must be available to different personas and for different regulatory purposes at different time intervals but will ultimately be archived
  • the platform must support functionality wise for passengers:
      • ability to sign up for the rewards and booking platform
      • search for, book, modify, cancel, and display upcoming flights, including changing dates, fare class, and routing
      • display rewards, utilize or redeem rewards, convert rewards from partner airlines, receive rewards from partner airlines, and recognize bookings with partner airlines
      • Integration with partner airlines to send booking and reward utilization information, including sharing code-share, co-marketing, and split segments between partner airlines
      • track baggage, ideally via airport codes, mapping, and optional geolocator tags with 4g/5g enabled chips
      • allow users to manage profile information, linked accounts/family plans, billing information, discounts, and other relevant airline and rewards information
      • allow the platform to provide incentivized gaming travel, including geocache games within and around airports to select destinations, QR code “capture the flag” games, leader boards, and prizes
      • allow airline passengers to see progress in reward status, as well as statistics
  • the platform must support various agent and reward employee functionality including the ability to:
      • search, manage, and modify bookings, as well as all route, seating, cabin, and other information on a relevant booking/ticket/PNR
      • merge profiles, bookings, PNR’s, and other requests by passengers
      • reset, reclaim, create, and manually register passengers
      • take all user actions against a specific booking
      • provide discounts, refunds, and override booking costs
      • manage reward items and availability
  • Administrators must have the ability to manage users and role assignments, as well as signup agents and employees of all types.

Airline Rewards App

Hard Platform requirements:

  • End-Use Ease of Use
  • mobile functionality
  • the ability to allow development teams to extend functionality on specific site features
  • reducing complexity for development teams
  • integration of 3rd party API’s

Philosophy of choosing characteristics for cloud migration and modernization

It’s important to understand and accept that you cannot solve all potential problems in one solution, at least not as primary drivers. Solutions need to cater firstly to a core set of principles that drive the discussion and overall design, after which individual components can be tweaked. There are
an endless number of ways to evaluate how to select this criterion and what those architectures may contain in terms of characteristics. In this article, we’ve focused on utilizing Mark Richard’s. Architectural characteristics, customizing the characteristics to our own specific use cases.

The intent of this exercise is to pick the most business-critical architectures as previously identified and then work to solve those as best we can given the trade-offs between technology choices in our
base architectural design.

Airline Rewards App

Chosen architectural characteristics

a. Evolvability
Given the ever-present evolving nature of customer behavior and expectations, along with the uncertainty around travel, travel restrictions, and providing incentives to users, not to mention the ecosystem of partnerships this application must interoperate with, evolvability will be a primary consideration for this platform.

b. Servability
The platform must lend itself to a wide range of potential audiences, from both a technology standpoint (e.g., older devices, modern phones, and archaic API’s), through to languages, currencies, and users with disabilities. An API must drive any interface if a new consumption model arises. Ideally, any presentation layers must be completely abstracted to facilitate easier transitions existing applications to any display or technology need. The product extends the range of profiles, from extremely technically knowledgeable to extremely limited tech-savviness, and must therefore be simple enough to operate while providing advanced functionality for power users and frequent flyers.

c. Data security
The system handles and processes a significant amount of PII (personally identifiable information) of airline customers. From booking information, KTN’s (known traveler numbers), redress numbers, passport ID’s, and credit card information, the system is ripe for financial and identity theft. There are significant burdens and risks around cyberattacks, impersonation, bad actor employees, and simple data corruption that could have an extremely adverse impact on a customers’ life. Ensuring the security and integrity of the data center will be an overarching non-negotiable characteristic.

Secondary considerations for cloud migration and modernization

Though not primary considerations, we must consider that there are minimum thresholds for some interactions. As such, we’ve documented use cases that are not primary motivation decisions but, where possible and appropriate, should be accommodated.

a. Responsiveness
Since the application is user-facing, it must be responsive to user input. These include quick acknowledgments of long-running interactions (eg, flight searches for complex itineraries.) There is no expectation that requests must be fulfilled within the Doherty Threshold of 400ms, but all requests must show some action taking place far below that threshold.

b. Cost feasibility
Direct costs and the indirect costs of velocity are both motivating factors. The product has a budget and time constraints, but they are just that, constraints, not the primary motivation. A solution that costs more or takes longer for a better experience or faster development velocity later is an acceptable trade-off.

Airline Rewards App

Proposed Solution Architecture: Base-level

The proposed solution below has a brief description, and more detail will follow in subsequent articles that lay out the various compromises and full descriptions of the components. Build upon this base architecture, adding components and detail as required for a fully fleshed-out solution.

For a base-level architecture, the design process focused primarily on finding a suitable platform that was microservices serverless based, as this would allow us to pick both modern components including SaaS (software as a service), PaaS (platform as a service), and DBaaS (database as a service) components at will, as we desired. This architecture could be optionally extended to support any number of different software components, from traditional VM’s (virtual machines) and containers to 3rd party API’s, and other serverless services without our chosen cloud provider – in this case AWS. A microservices serverless platform is strictly speaking borrowing from multiple architecture styles, but it suits this specific set of problem criteria well.

Proposed Solution Architecture: Initial component choices

The initial component choices allow for a very fast prototype and development, with a highly pluggable application that allows different teams considerable autonomy from one another when developing features.

Additionally, the use of amplify with Cognito also allows for the following:

  • handling a significant number of overhead common denominator tasks, such as user and session handling,
  • authentication, role mappings, and numerous other overheads that get wrapped up into a neat package for quick deployment,
  • quicker facilitation of development cycles, increasing velocity, and decreasing human costs.

Additionally, the platform is both web and mobile friendly by default. The ability to quickly create multiple views and interfaces with content also solves a number of issues related to servability, including ADL (activities of daily living) interfaces for people with disabilities, including pages that are friendly to screen readers and other assistive products. Finally, the platform is very user-friendly, supporting multiple notification paths, including SMS in multiple countries, and allows users to authenticate with their preferred identity provider they already recognize, while travel agents and internal employees can make use of SAML and OpenID.

Proposed Solution Architecture: Resilience and security of the components & future directions

The components chosen are all:

  • highly resilient and support multiple ways to vet and verify data integrity and access to data,
  • have the capability to log and audit access, code, and data changes, as well as individual API and data accesses,
  •  are secure by default, building on an existing trusted ecosystem supported by AWS and vetted via thousands of production installations. Coincidentally the cost footprint of this architecture can be relatively low, and it lends itself well to fast responsiveness.

We’ll talk more about the individual services in a future article in this series including the specific advantages and disadvantages of each in a number of important categories both from a development and operational perspective and how best to mitigate risks and shortcomings with each. This is by no means a complete architecture, and the components here today do not fulfill all requirements. It does provide a solid base upon which to build, however.

Figure 2: HLD (High-Level Architecture Diagram)

Application Migration and Modernization. Airline Rewards App: HDL v2

Note: A detailed breakout of the components and a styles mapping from the HLD will be provided in a follow on article.

Acknowledgments to:

What’s next? Breaking down the Application Migration and Modernization journey: a comprehensive series

There is a lot to tackle along the application migration and modernization journey, from concept discussions to a full application plan, and they don’t all happen at once. Though not every application will require the full depth we dive into here, some will, and every application will use some bits and pieces from our methods presented here. As such, we’ll step through the journey using a series of articles so readers can pick and choose the topics most relevant and decide which bits to follow and which to discard. Putting them all into one article would produce a short book and still be incomplete.

1. Discovery & gathering business requirements (prequel: coming next)
2. Mapping captured requirements and existing solution to a high-level architecture (covered in this article)
3. Design processes, sequence, UX workflows & UI Wireframes
4. Design a coherent deployment process
5. Create C4 diagrams (System Context, Container diagrams)
6. Bolt-on Reporting & Business Intelligence (BI)
7. Identify Risks and Migrations (business & technical)
8. Create Architectural Decision Records (ADRs), discuss trade-offs, and gather feedback on decisions
9. Cost of Ownership breakdown (Implementation, ongoing operational, ongoing infrastructure & cloud, security, and risk costs)
10. Define common project definitions and glossary
11. Creation of project backlog (Milestones, Epics, non-functional information capture)
12. Operational and ongoing management considerations
13. A complete project ready-to-go project pseudo (GitHub repository)

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

If you violate the Regulations , your post will be deleted.

    _All posts in this category

    How to leverage AWS key benefits to get real business value with Cloud Application Modernization

    It's not rocket science, and it's pretty obvious that businesses need to keep up with the fast-changing digital landscape to remain competitive. Cloud…
    Read more

    Cloud Native Approach: Modernize or build cloud applications from scratch?

    Everyone probably knows about applications. But how about the concept of Cloud Native? Perhaps many of you, well almost everybody, have heard something…
    Read more

    How can artificial intelligence influence the vision of the future and cloud computing development?

    The beginning of the year is a time of intensified summary of the past months, as well as preparation of plans for the…
    Read more

    Navigating Cloud Disaster Recovery Realities

    In the ever-changing landscape of cloud technologies, the advent of AWS over a decade ago marked the onset of a transformative era. The…
    Read more

    Azure Cloud Security: How to ensure the Zero Trust Model and use AI to our advantage?

    Since the global popularization of remote work in recent years, IT security teams are facing ever-increasing challenges to ensure effective and secure access…
    Read more

    Is the Edge a new Cloud?

    Nowadays, many organizations that adopted the cloud are looking into the Edge as a natural extension for their cloud-based solutions. On the other hand,…
    Read more

    Quantum Computing: Where Schrödinger's Cat gets cozy in the Cloud

    Join me for a journey that will take us from the realm of reality as we know it to a world where a…
    Read more

    Will hybrid cloud and multi-cloud defend you from vendor lock-in? Do you really need to be wary of it?

    Vendor lock-in is a concept overly often associated with the IT industry, and in recent years, especially with cloud computing, although it is…
    Read more

    The critical role of cloud-based data platforms. Reshaping manufacturing data management

    Cloud-based data platforms revolutionize manufacturing data management by efficiently handling vast amounts of data in real-time. Manufacturers can collect data from various processes,…
    Read more

    How can AI Data Discovery help manufacturing companies?

    We are all blessed to live in very exciting times. Exponential technological progress over the last couple of decades has influenced not only…
    Read more

    How to properly understand the public cloud in 2023? And why is it so difficult?

    Cloud computing is constantly changing and evolving. What we see today is different from what it was yesterday and not the same as…
    Read more

    Become a top example of a complete transition to Industry 4.0

    Digital transformation and moving towards the idea of Industry 4.0 (I4.0) & Smart Factory (in AWS) are not easy. There are many obstacles…
    Read more

    Automated testing of serverless applications: 6 key takeaways from AWS re:Invent Dev Chat

    The long-awaited 11th AWS re: Invent has just come to an end. Transition Technologies PSC marked its presence, among others, thanks to the…
    Read more

    How to get closer towards Industry 4.0?

    Ensure business growth in the digital age. Dive into #digitaltransformation to find new opportunities, business models, make changes in your organization and bring…
    Read more

    How to implement Industry 4.0 smarter, faster, and easier?

    The concept associated with Industry 4.0 is Smart Factory – in other words “intelligent factory”. This type of plant is based on integrated…
    Read more

    ThingWorx AWS Connector

    The ubiquitous fourth industrial revolution, named Industry 4.0, is now one of the fastest growing IoT markets. The digital transformation journey is more…
    Read more

    How to achieve AWS cloud cost optimization with FinOps?

    The cloud is not on-premise, which means that IT purchases don't happen according to a strategic plan, but immediately when the architect provisions…
    Read more

    Driving digital transformation in the cloud

    The cloud is a key success factor in digital transformation. It provides companies with many decisive advantages. However, the prerequisite for this is…
    Read more

    What should you know about serverless computing?

    Serverless cmputing still raises a lot of doubts, especially among those environments that are just starting to use cloud services or are just…
    Read more

    What is DevOps as a service and how you can benefit from it?

    DevOps is an innovative methodology that introduced a new quality of work on IT projects. It is based on the cooperation of autonomous…
    Read more

    9 reasons why you should use the cloud in your business

    According to "2019 State of the Cloud Report from Flexera" RightScale's report, 94% of companies use the cloud. It is no coincidence that…
    Read more

    How to start your journey with Azure and prepare for the AZ-900 exam

    The demand for Cloud specialists is dynamically growing. How to get a wide range of competences and quickly familiarize yourself with the subject…
    Read more

    Cloud in a time of crisis – how to improve work in your company

    The world we've known in recent years is changing a lot. It forces us to change our habits as well as the ways…
    Read more

    How to take care of the security of serverless applications in AWS?

    The AWS re:Invent 2019 conference, similarly to previous editions, was full of interesting lectures, such as breakout sessions, which aimed at familiarizing the…
    Read more

    SSM parameters in AWS automation

    Some time ago I was involved in a project that was to provide HA Windchill Cluster - actually, nothing new, the cluster itself…
    Read more

    How we touched the clouds – AWS re:invent 2019 seen with our eyes

    Apart from the funding, participation in the AWS conference re:Invent requires engagement and a bit of persistence on the participants’ side. In our…
    Read more

    How to make use of Talend Open Studio in the medical industry?

    The use of modern technologies in medicine is getting more and more popular. Paper patient records are becoming obsolete and are being replaced…
    Read more

    What is Amazon Web Services cloud?

    Cloud computing is one of the world’s most rapidly developing technologies. It is successively replacing traditional server solutions, obtaining a larger and larger…
    Read more

    Why serverless is the future of software and apps

    Every few years there is a new big thing in IT. Nowadays, all eyes are focused on Machine Learning (ML) and Artificial Intelligence…
    Read more

    _Let’s get in touch

    Contact us