Professional Documents
Culture Documents
Modernization
Niranjan Kumar Pandey
Objective
• Legacy Landscape
• Evolution of 3-tier as Architectural Paradigm
• Limitations of 3 tier and Constraints of Legacy Application
• Modernization Myths
• Case of Modernization
• Conventional Modernization Approaches and Limitations
• Architectural Paradigms for Modernization
• Modernization Strategies and Services
Legacy Technologies
Software complexity
Limitations Monolithic code base
of 3-tier and
constraints Limitation of CRUD operations
of Legacy Inflexibility
Application Lack of modularity and integration challenges
Inability to scale
Myth Around Modernization
Modernization Mindset
Unprecedented
Technology and
Continuous Process business disruption
makes modernization
business imperative
Why Modernize
Database Migration
En masse Approach
A REACTIVE SYSTEM THAT IS FLEXIBLE, A FUTURE-READY APPLICATION BUILT PROCESS AND DEPLOYMENT A MODERN, REACTIVE AND OPEN
LOOSELY COUPLED, SCALABLE, RESILIENT, WITH MODERN PROGRAMMING MODERNIZATION TO SUPPORT RAPID APPLICATION THAT IS EASY TO
AND RESPONSIVE. LANGUAGES, USING FLEXIBLE AND DEVELOPMENT, CONTINUOUS DELIVERY INTEGRATE AND WHICH CAN SUPPORT
MODULAR ARCHITECTURE, AND CAPABLE AND DEPLOYMENT MULTIPLE BUSINESS MODELS AS PART OF
OF DELIVERING CONSUMER GRADE DIFFERENT PLATFORMS
EXPERIENCE – AT SCALE, USABILITY AND
INTELLIGENCE
Enable digital business, you need to transform your approach
to the apps that are at the core of your operations.
What is
development across people, processes, and technology, and
embracing cloud-native development
Refactoring • Process of restructuring code to refactored applications can receive • A partial refactoring modifies only
improve performance without all vendor software updates, specific portions of the application to
changing its intended function. ensuring security standards and enable the migration to the cloud
• Refactoring involves customizing performance are maintained platform
an application so it can run on a • complete refactoring modifies
cloud platform. applications so they can perform at a
much higher level of efficiency and
optimizes them so they can operate
at much lower costs.
Replacing • There are two choices when it • The replace option is for companies that • Replacing an application involves
comes to replacing aging, on- are in need of a specific function, such as analyzing a suitable SaaS or cloud-
premises systems: redeveloping payroll or inventory, but know that the native platform that provides
with new code built for modern legacy system is so out of date that starting enhanced or like-to- like features
cloud infrastructures using from scratch in the cloud or moving to SaaS from a functional perspective and yet
current development tools or would be the most efficient option. offers all the benefits of cloud.
shifting to SaaS. • Companies that rebuild have an
• Replacing is the most labor- unprecedented opportunity to create • A critical aspect of replacement is
intensive option of the functionality that exactly matches current developing a phase-out strategy,
approaches and may involve needs and future requirements. migration plan, and reconciliation
some level of business design and deployment architecture.
disruption.
Organizational Structure
Transformation
Fifteen-factor Design
One codebase,
Backing Environment
one
services parity
application
Authentication
Administrative
API-first Disposability and
process
authorization
Dependency
Logs Port binding Telemetry
management
Native
Modernization Adapt the IT operating model to support
both business agility and stability.
1 2 3 4
Build for the Design for Ensure Enable
business resilience observability Automation
Scalability
Key
outcome of Elasticity
cloud
Native cost savings as compared to the traditional
on-premises architecture.
Pay only for the compute cost of specific business functions through fully
modularized applications, serverless is an increasingly popular option.
Misconception about Serverless
Performance
Expense
Vendor lock-in
Security
Management
Operate
Operate
modernized landscapes can deliver business value much faster, they also
require management of a highly distributed ecosystem from application
features down to containers, platform, and infrastructure layers.
Operations ADM
Balance In application portfolio rationalization, balance business factors with technology factors.
Enable and Enable and transform: Enable the workforce on emerging technologies; adopt
transform Agile/DevOps and transform into new ways of working.
Establish Establish an engineering culture with a focus on software craftsmanship and mastery.
Mitigating Streamline
Streamline processes to identify and eliminate redundant functionalities and invest in
new features.
Define Define a maturity path to measure and upgrade application modernization initiatives.
Readiness Conduct Conduct interviews with key stakeholders or personas for each
application suite.
Assessment
Process
Gather information by using the application modernization
Gather questionnaire , analyze the gathered information, document
observations, and determine next steps.
Functional adequacy
What is
objective of Technical adequacy
assessment Financial fit
Digital readiness
Prerequisite Check
Asset Alignment
Blueprint
to Define iterations and releases
and
analysis Applications that have extensive data migration
requirements
dimensions Storage
Operating model
Delivery Model
SkillSets
Approach of modernization
Modernization Timing
Cost Analysis
Business agility
Product
Decide what
metrics
should or could be
Operational
measured Metrics
IDENTIFY THE BUSINESS VALUE ESTABLISH THE BASELINE (FOR
TEST OR HYPOTHESIS (FOR EXAMPLE, THE CURRENT
EXAMPLE, FREEING X PERCENT OF CAPACITY OF XTRANSACTIONS
TRANSACTION CAPACITY WILL SUPPORTS Y CUSTOMERS).
Product
ONBOARD Y PERCENT OF NEW
BUSINESS).
metrics
standards Release
and best
practices
Operate
Optimize
Readiness
Code
Provide code comments that document the functionality of your software, and use them to generate
documentation.
Follow code management and deployment processes that support frequent code check-ins and
traceability to feature requests.
Build test suites that include unit, functional, performance, and critical path tests, with 100 percent
code coverage.
Encourage code reuse to deliver the same or similar functionality in your code base.
Develop prototypes to validate features with users before investing in full code development
Redefine feature completeness based on testing, to improve quality
and prevent recurring issues.
Build and Monitor all automated tests, and establish a process for handling
Test
failures in place.
Abstract sensitive data from configuration files, and provide tools that
automate and monitor configurations
Automate deployments with support for dependencies (for example, database releases),
Automate regression testing, and tracking.
Release Release code to the production environment incrementally, after every successful build.
Release Manage Manage feature flags (toggles) effectively: support run-time configuration, monitor
usage, maintain flags throughout the development cycle, and assign owners by category.
Provide traceability in your build pipelines, to track triggers, failure notifications, and
Provide successful completion.
Run automated deployment processes and tests for “zero touch” code updates in
Run continuous delivery.
Make sure that your database schema changes are implemented consistently across all
Make development and production environments.
Create Create a DevOps triage runbook that’s integrated with your notification system.
Make sure that your monitoring and notification system meets service-level objectives
Make (SLOs) and supports thresholds, health checks, non-standard HTTP responses, and
unexpected results.
Operate Establish Establish effective risk management and disaster recovery processes.
Develop Develop a log rotation and retention strategy that meets your business and legal
requirements.
Develop Develop dashboards that track product performance, measure the success of new
features, and display alerts when metrics don’t meet expectations.
Optimize
Traditional Modern
Monolithic Decomposed
1 2 3 4 5 6 7 8 9 10
Design for Make all Minimize Design to Partition Design for Use managed Use the best Design for Build for
self healing things coordination scale out around limits operations Services data store for evolution needs of
redundant the job business
Technology Choices
Compute
Container options
Identity Services
Highly observable
Small Modules
Unaffected
Programming Languages
NodeJs .Net
Monolithic to
Microservices
Step:1 Decompose monoliths
into microservices
Decomposing
monoliths
into Step:2 Integrate Microservices
microservices
Step:3 Enable Data persistence
for Microservices
Decompose by Business capability
Decompose
Monoliths Decompose by Transactions
Advantages Disadvantages
•Teams act independently •It can be difficult to align
with minimal coordination. teams to end-user
•Code bases and functionality or business
microservices are not shared capabilities.
by multiple teams. •Additional effort is required
•Teams can quickly innovate to deliver larger, coordinated
and iterate product features. application increments,
•Different teams can use especially if there are circular
different technologies, dependencies between
frameworks, or programming teams.
languages. Important: These
should be hidden behind a
well-defined and stable public
API.
Activity :Monolithic to Microservices
How to proceed
Managing
Managing Data in microservices
• Data as API
• Projection of Data
Service Registry
Software Load balancer
Stack - Circuit Breaker
Spring Boot Externalized Configuration
framework Distributed Tracing
Proxy/Routing
Ribbon
Client
Library
gRPC
Invoking Service –Consuming Service
Client MiicroServ
Libraries ice
Web app
Ribbon/gRPC Service
Server side
code
(Parquet)
Service
Eureka
Service Consul
Registry Zookeeper
Opernshift
Ribbon
Load
gRPC
Balancer
OpenShift Service
Circuit Breaker • Hystrix
Spring Cloud
Config
Externalized
Configuration
openshift
ConfigMaps
Sleuth/Zipkin
Distributed
Tracing
Jaeger
Zuul
Proxy/Routing
Istio
Lab:01
Creating Microservice using
Spring boot
Lab 01 Creating
Microservice.docx
Spring's client/server approach for storing and serving
distributed configurations across multiple applications
and environments
Cloud
application runtime.
Client side
The only ‘fixed point' in such an architecture is the service registry, with
which each service has to register.
discovery drawback is that all clients must implement a certain logic to interact
with this fixed point.
How is
Fast rollback of versions in case of problems avoiding
the re-launch of 100’s of instances.