"App Modernisation" is such a buzzword you might end up thinking there's no such thing. That code just needs to be rewritten every "N" years, that existing apps couldn't take advantage of new platforms, technologies or frameworks. That all the fuss about "goin' cloud" is a fad. Let me tell why you might consider being wrong.
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
1. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Modernise your app:
the cloud story
Andrea Saltarello
CTO @ Managed Designs
Microsoft Regional Director – Microsoft MVP
https://twitter.com/andysal74
https://github.com/andysal
https://www.linkedin.com/in/andysal/
3. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Me.About();
• CTO & Solution Architect @ Managed Designs
• Microsoft MVP since 2003
• Microsoft Regional Director since 2015
• Author, along with Dino, of .NET: Architecting
Applications for the Enterprise (Microsoft Press)
• Basically, a software architect eager to write code (that
is, a programmer J)
4. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
«We’re programmers. Programmers are, in their hearts,
architects, and the first thing they want to do when they
get to a site is to bulldoze the place flat and build
something grand. We’re not excited by incremental
renovation: tinkering, improving, planting flower beds.»
[https://www.joelonsoftware.com/2000/04/06/things-
you-should-never-do-part-i/]
It’s harder to read code than to write it.
6. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
«Under certain circumstances, it made a lot of sense to rewrite
from scratch. For example:
• Sometimes the legacy codebase really is messed up beyond
repair, such that even simple changes require a cascade of
changes to other parts of the code.
• The original technology choices might be preventing you from
making necessary improvements.
• Or, the original technology might be obsolete, making it hard (or
expensive) to recruit quality developers.»
[https://medium.com/@herbcaudill/lessons-from-6-software-
rewrite-stories-635e4c8f7c22]
Still…
7. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
App Modernisation
Application modernization services address the migration
of legacy to new applications or platforms, including the
integration of new functionality to provide the latest functions
to the business.
Modernization options include re-platforming, re-hosting,
recoding, rearchitecting, re-engineering, interoperability,
replacement and retirement, as well as changes to the
application architecture to clarify which option should be
selected.
[Gartner Group]
8. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
App Modernisation strategies
• re-platforming (lift, tinker & shift)
• re-hosting (lift & shift)
• recoding
• rearchitecting
• re-engineering
• interoperability
• replacement (moving to a different product)
• retirement (get rid of)
[https://aws.amazon.com/it/blogs/enterprise-strategy/6-
strategies-for-migrating-applications-to-the-cloud/]
9. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
App Modernisation, from a Microsoft’s perspectiveEngineeringComplexityandCost
Existing on-
premises
applications
VMs
Rehost
Containers
&
App Services
Refactor
Microservices
Rearchitect
Serverless
Rebuild
New
SaaS apps
Replace
App Modernization
Lift & Shift
14. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
VMs hosted by an on-premises 2-node VMWare cluster:
–Web Server (IIS 8)
–DBMS (SQL Server 2008 R2)
–Mail server (MailEnable Pro)
As-is
15. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Faulty hardware
• Lot of bandwidth consumed for streaming purposes
• Lot of storage space needed for videos
• Blacklisted newsletter
• New MailEnable Pro license needed
Pain points
16. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
1. SQL Server -> SQL Azure
2. MailEnable -> SendGrid
3. Web Server -> (B2MS) VM
4. Videos -> Vimeo
5. Web Server -> AppService
6. [TBD] Attachments -> Blob Storage
The Plan
19. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
12 floating ultra-luxury hotels
Vs
12(+1) floating data centres with synchronisation needs
(both data and code)
Different point of views
20. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Little time to apply patches and make upgrades
• Hard to maintain synchronisation scripts
• Expensive storage space (gazillions of documents)
Pain points
21. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Lots of VMs hosted by on-premises Hyper-V and
VMWare based clusters
• All-in on Microsoft development stack, with a pinch of
PHP
• Lots of x-database queries
• SMB shares purchased from a provider
As-is
22. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• One compute to rule ’em all
–On-the-ground -> Azure
–Floating data-centres -> Azure Stack
• IIS -> App Services
• Storage Provider -> Blob Storage
• SQL Server - SQL Managed Instances
• CosmosDb
To-be:
24. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
fundamental concepts or properties of a system in its
environment embodied in its elements, relationships, and
in the principles of its design and evolution
[ISO 42010]
Software Architecture
25. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
• Create each bounded context as an interoperable
microservice
• Let web servers be… just web servers
• Join the async side of the Force
• Disk space is cheap
• Coolness often comes at a price
Demo app available on Github (AGPL3): it’s a micro-ERP
my company developes as a kick-starter
Rules of thumb
26. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
A fine-grained architecture allowing each element to be:
• Evolved
• Deployed
• Configured (e.g.: scaled)
• Replaced
independently, thus having each one only consuming
the resources it really needs yet having more moving
parts to manage as well
Microservices FTW
27. @ITCAMPRO #ITCAMP19Community Conference for IT Professionals
Application
Layer
Snapshots
Event store
Read stack
Domain Layer
Ad-hoc DBHandlers
Command Event Data
Handlers
Model ServicesB
U
S
CQRS/ES at a glance