What is rearchitecting?

In IT, rearchitecting is the process of redesigning the architecture of an application based on more modern computing concepts. The idea is that invaluable business logic and data relevant to the organization lies within the application code and surrounding artifacts (such as DDLs, copybooks, user training manuals) and that these assets should be leveraged in the new system. Rearchitecting is not about rebuilding from scratch. One of the benefits of a modern IT environment is that a good deal of the business logic can reside above the code using declarative models; part of the original technical code can be replaced by middleware tools (BPM tools, business rule engines, data integration, access solutions, etc.) to improve agility. Rearchitecting focuses on capturing the value of the business process, in a way that is independent of the legacy code base, and moving it into a different paradigm while eliminating the technology-specific code.

Rearchitecting is sometimes confused with refactoring, which is simply the rewriting of parts of an application within the existing application architecture.

 

Reasons to rearchitect applications for the cloud

  • Reduce cost of ownership: Large applications are often expensive to operate and maintain on legacy hardware-based infrastructure, especially when the requirement for scale-out elasticity can be more easily provided by the cloud.
  • Increase agility: Traditionally, IT was responsible for configuring servers, databases, and networking, while also ensuring end-to-end security. This takes time, which means that developers typically have to wait for environments to be provisioned. In the cloud, much of that effort is already taken care of by the cloud provider.
  • Improve application resilience: Monolithic applications are notorious challenging when it comes to failures and issues. Typically, any problem in any part of the application sets off a domino effect that takes down the entire app. Rearchitecting enables you to build fault tolerance into individual microservices.
  • Enable scalability: Unable to scale on-premises instances fast enough, large technology companies like Google, Microsoft, Facebook, and Amazon began migrating to the cloud over a decade ago and have since achieved true “web scale,” including elasticity and enormous horizontal resource scaling
  • Support no-compromise monitoring and security: Monitoring and security are fundamentally different with cloud-native applications. Though monitoring and security are more complex and challenging for cloud-native applications, when done right they provide visibility and confidence that you simply cannot get with traditional monolithic applications running on premises.

 

Suggested Reading and Related Topics

  • Cloud native services: Understand the type of services that are cloud-specific.
  • Lift and shift and refactoring: Understand how rearchitecting differs from lift and shift and refactoring cloud migration options.
  • Microservices: Learn about microservices architectures and their benefits.
  • Serverless computing: Understand this cloud computer architecture in which the cloud provider runs the server and dynamically manages the allocation of machine resources.