Posts

Microservices_Scalablity_Banner-1030x431 Microservices Scalability as a Business Issue

Microservices are a popular option for application modernization. For one thing, they are cost-effective, making them ideal for smaller companies. Also, microservices can be cloud-native, saving the space required for on-premise systems. More importantly, microservices deal with the issues of monolithic applications. To name a few:

  • Hard and slow to maintain and test.
  • Fixing a feature with bugs or under maintenance represents downtime for the whole application.
  • Difficulty to manage different languages.

Still, the main perk of microservices in comparison with monolithic applications is scalability: microservices capacity can be configured to scale dynamically to match how much they are demanded in a given time.

In this article, we will discuss defining and administrating microservices. We will see that defining microservices and their scalability is as much of a business question as a technical one.

What is microservice scalability?

The microservice architecture is a way of designing applications in which each of its modules, components, or functions fit into separate programs. By design, each microservice is meant to have a single functionality. Despite microservices working together, they are independent: they have their own database and communicate with other microservices through their APIs instead of relying on language-level communication or function calls.

These design choices are what separate microservices from monolithic applications. In comparison with monolithic applications, the microservice architecture offers the following perks: 

  • Integration: Due to their modularity, microservices can communicate with the client-side without calling another microservice first. Also, since microservices are language agnostic, they can communicate with each other without problem despite which language they are written in.
  • Fault tolerance: Their independence ensures that a fault in one microservice won’t make another fail.
  • Maintenance: They are easier to fix given the size of their code and independent diagnosis. In addition, systems can be maintained with short downtimes before redeployment.

Withal, the most important feature of microservices is scalability. Monolithic programs share the resources of the same machine statically. Microservices, in turn, scale their specs when demanded. In this way, microservices architectures can administer their resources and allocate them where and when they are required.

How to define microservices and scalability

We interviewed Richard Reukema, software architect at Optimus Information with decades of experience in the IT field, about microservices scalability. For starters, he believes that granularity (how minimal microservices can be) can be detrimental if not properly defined: “I’ve seen microservices used to the point where they’re so granular, that there are so many microservices, that there are so many REST calls that the whole system just can’t operate at scale.” As the number of microservices increases, so does communication complexity. Plus, since they have separated databases and logs,  maintaining a large number of microservices is more demanding. Likewise, converting small applications into microservices is not worth it in most cases; in comparison to small applications, a microservices architecture is more complex to maintain and implement. Therefore, the main problem with microservices is correctly defining their size.

Yet, taking into account the application functions as a whole and the optimal balance between granularity and independence is just part of solving the issue. According to Richard, what defines applications as monolithic is their companies’ business operations. In his own words, “application architecture never defines implementation; it only defines the responsibilities of the business.” He understands that “if a business had a help desk and the help desk took calls from every aspect of the organization, it would be a monolithic application because every time the phone rang, somebody would have to answer that call.” In this way, an application will be as monolithic as the business processes of its organization let it be.

Hence, a way of avoiding microservices becoming monolithic is decentralizing their communication channels. “If you want the delivery calls to go to the delivery people, and sales calls to go to the salespeople and the inventory to the inventory people, you suddenly have a department that either has an operator that routes the calls to the right department or you give the phone number to the people, and say, this is our area of the business that handles these different aspects of the business, and that’s no different to the API.

 

How to define scalability

After defining the right size for the microservices, these can be implemented and mapped up to containers. According to Richard, “the benchmark for containers is scalability: If I have a very small API, but it is handling three hundred thousand requests per second, it’s got to be able to scale very quickly, and more importantly, it should scale in”. Container servers scale in when their system capabilities (CPU, memory, network bandwidth, etc) are increased to match the demand the system requires. Containers autoregulate their resources in two main ways:

  1. Scale up or vertical scaling: Increasing the application capacity by augmenting the capacity of your servers—virtual or physical. Preferred for stateful apps since these require keeping the client information between sessions to work.
  2. Scale-out or horizontal scaling: Increasing the number of server instances to manage demand. Preferred for stateless applications since these don’t store client info.

In the case of scaling out, there’s also the idea of “scaling in,” that is, reducing server instances when the demand goes down. In this way, scaling can also improve microservices’ cost-effectiveness. To Richard, learning when to scale in is as important from a business perspective as scaling out: “If you can scale out as you’re generating revenue, and scale in when you are not incurring revenue, you’re saving expenses.” Hence, the business practice of minimizing expenses should also be taken into account when designing computer systems.

 

The bottom line

Microservices have made it possible to administer a system’s capacity much more easily and efficiently than monolithic applications. However, as we have seen, microservices are not the end of monolithic applications. As such, when designing microservices, we need to keep an eye on our business operations, and not exclusively focus on the technical aspects of the implementation.

 

 

To learn more, check out our blog about Legacy Systems: The Risks of Postponing Application Modernization.

Legacy-Application-Modernization-1 Legacy Application Modernization: Benefits, Challenges and Approaches

Organizations typically invest considerably to procure or develop custom applications that support critical business operations. Unfortunately, when these applications go out of date, replacing them with newer applications is often not an option due to the amount of dependency these generate over time. However, these legacy applications can be updated and reconfigured to work seamlessly with modern platforms that are more efficient than legacy monolithic frameworks.  

Migrating legacy applications to the cloud offers more comprehensive benefits such as platform flexibility, application scalability, robust security, and cross-platform compatibility. This article delves into the benefits of Legacy Application Modernization, related challenges and common approaches to migrating a legacy desktop application to the cloud.

 

Introduction to Legacy Application Modernization

Legacy applications require considerable investment to maintain competitiveness. More so, legacy applications follow a tightly coupled, monolithic architecture – that are susceptible to emerging security threats, are immutable and offer less scalability. As business dynamics keep changing, organizations relying on legacy applications must adopt consumer behaviour and embrace efficient models that enable holistic competence.

Legacy Application Modernization is a digital transformation strategy that repurposes existing software to make it compatible with modern devices and applications. Such applications can be rebuilt by rewriting the source code, augmenting the application or plugging the existing code and dependencies into a modern platform. 

 

Key Reasons to Modernize Legacy Applications

With legacy app modernization, organizations can advance their systems to stay competitive, pivot with changing consumer needs, and adopt advanced technology for efficiency. The following are some of the key reasons organizations embrace app modernization:  

Business Factors

  • Maintaining ageing applications costs more, so modernizing legacy apps lead to reduced operational costs
  • Modernizing helps organizations gain a competitive advantage using systems with enhanced performance and agility.
  • Modernized Legacy Applications boost efficiency and innovation since they are highly scalable, allowing for flexible deployment platforms and automation.
  • Improved customer satisfaction as modernized applications meets modern performance and user experience standards.

Technical Factors

  • Straightforward API integration with other software and third-party tools.
  • Modernization keeps applications secure from ever-evolving security threats.
  • Enhanced application performance with reduced security risks and reliable processes.
  • Enables adoption of efficient operating models and frameworks such as DevOps.

 

Challenges of Legacy App Modernization

While embracing app modernization, organizations face several challenges. Some of these include:

  • Resistance to change by employees/business stakeholders
  • Inadequate requisite skills for migration and post-migration phases
  • High initial costs 
  • Complex to replicate user-friendly systems
  • Lack of clarity on the right cloud model to choose 
  • Inflexibility and incompatibility with external APIs and tools.

These challenges remain critical factors for an organization’s hesitation to app modernization. However, with thoughtful planning and coordinated execution, the benefits of achieving operational efficiency surpass the challenges in the longer run.

 

Approaches to Migrate a Legacy App to the Cloud

While the best strategy for transitioning to the cloud varies with the organization’s requirements, there are common approaches that can ensure a successful modernization. 

  1. Assess and Audit the Existing Tech Stack

    Organizations must diligently assess the existing system’s performance and how effective it is for business processes. Doing so requires a comprehensive audit of related applications and infrastructure to establish whether the system is worth upgrading, and eventually helping to form the basis of the migration approach. Audit & Assessment also helps teams identify which software or infrastructure no longer adds value to the business, thereby helping to streamline migration efforts and costs. 

    Some important aspects to audit include:

    • Architecture An assessment of the application’s high-level architecture and components to identify bottlenecks that determine the most appropriate migration strategy.
    • Code – A comprehensive audit of the source code to detect code errors, vulnerability, and compatibility with the new platform. 
    • UI/UX – Assessing user interfaces, supported operations and processes to ensure user experiences are seamlessly migrated over and remain unchanged.

     

  2. Choosing the Right Migration Approach

    One key consideration before planning a cloud migration is to decide the right approach to adopt. Existing workloads, expected load, and projected business requirements are often common factors in determining the right strategy. Depending on the business case, organizations may follow one of the two approaches:

    Big Bang

    This strategy typically refers to a lift-and-shift approach where the entire application is re-hosted to the cloud in a single milestone. As a quick option, this approach allows the legacy platform to be decommissioned, while the organization’s entire workloads are deployed to the cloud in a single move. The Big Bang approach offers a shorter implementation time and is considered perfect for organizations that utilize smaller, non-complex workloads.

    Phased

    The phased strategy refers to an approach in which the application workloads are shifted to the cloud in multiple, small milestones implemented over a period of time. This approach is considered suitable for large migration projects where it takes time to train the staff and for organizations that consist of multiple business units. Besides this, a phased approach offers additional benefits such as easier change management and a lower risk of failed migration.

    More details on various cloud transformation strategies, including Rehosting, Replatforming, and Refactoring can be found here

  3.  Forming the Right Team

    As operating an application on a cloud-native ecosystem requires niche skills that are mostly different from an on-prem setup, organizations must plan to onboard the right team of experts who ensure legacy-to-cloud transitions are seamless. This can be done by reskilling its existing staff, hiring new resources or outsourcing to an external party to manage the transition as well as the BAU phase. Such experts are responsible for identifying components of the workload that require to be migrated and the challenges they may encounter.

    A commonly known strategy as part of the migration is to invoke the Agile model to ensure the transformation is comprehensive and highly collaborative. With the right Agile team structure, organizations can efficiently address emerging customer expectations and achieve operational excellence. 

    An Agile team structure primarily includes the following roles:

    • Product Manager
    • Program Manager/Scrum Master
    • Software Architect
    • Software Developers (Frontend/Backend)
    • DevOps Engineer
    • User Experience Designer
    • Quality Assurance Lead

     

  4. Appropriate Financial Planning

    Organizations must be wary of the associated costs of cloud migration. This typically involves an upfront lump sum for the shift and ongoing expenses during cloud usage. When budgeting for a cloud-based modernization, the migration program should identify financial projections of pre-migration, migration and post-migration phases. With appropriate budgeting, organizations unlock the comprehensive benefits of cloud migration as it helps teams allocate the right amounts of resources for configuration and deployment.

     

  5. Choosing the Cloud Service

    When migrating to the cloud, it is essential to pragmatically choose the right cloud service out of the following three models:

    IaaS

    Infrastructure-as-a-Service (IaaS) lets organizations acquire infrastructure resources such as storage, networks, processors and servers on-demand when required. Organizations only pay for the infrastructure they use for their workloads, which can be scaled to handle changes in resource demand. 

    Some popular IaaS offerings include Microsoft’s Azure, Amazon’s Web Services (AWS), and Google Cloud Platform (GCP).

    PaaS

    With Platform-as-a-Service, cloud providers manage the hardware and operating systems that allow organizations to focus on developing codes and automating deployment pipelines. This improves efficiency as it eliminates tedious capacity planning, resource procurement and software maintenance. 

    Some popular PaaS offerings include Windows Azure, AWS Elastic Beanstalk, and the Google App Engine.

    SaaS

    In Software-as-a-Service, the software vendors develop applications to be offered over the web. With SaaS models, organizations only need to plan, develop and maintain the application for end-use, rather than maintaining the underlying infrastructure or related platform. 

    Some popular SaaS applications include Microsoft Dropbox, Google Workspace, Salesforce, and SAP Concur.

Conclusion 

As cloud computing enables rapid acceleration in enterprise growth, there is an emerging trend of organizations embracing the cloud to modernize legacy applications. Continuing the ongoing trend, a recent Gartner survey projects that almost 70% of organizations using cloud services today plan to increase their cloud spending in the future. 

Legacy applications are traditionally run on-premises, that rely on slow, monolithic frameworks.  As a result, legacy applications cannot keep up with the agility and performance requirements of modern devices. As organizations transition to the cloud to enable digital transformation and modernize applications, they must be mindful of the challenges and the right approach while doing so. The right migration strategy, however, depends on the type of application, budget and business needs. 

 

To know more on how Optimus can help you modernize your legacy applications, contact us here

 

Modernizing-_Applications_with_Azure_PaaS-2 Modernizing Applications with Azure PaaSFor organizations that rely on legacy technology, the cost of maintaining outdated software inhibits innovation and slows down the digital transformation process. Since business operations generate dependency on these legacy systems while accumulating enormous data over the years, such systems are hard to scale and complex to replace.

Migrating their legacy applications to an efficient technology ecosystem, organizations undertake app modernization as one of the key stages of their digital transformation journey. With modernization, organizations embrace efficient technology, tools and approaches, including Cloud, DevOps, and Microservices. These collectively enable organizations to become more lean, agile, and adaptable. 

A common approach to app modernization is transitioning the legacy application off the on-prem servers and rehosting/re-platforming it to a cloud platform. A Platform as a Service (PaaS) platform is one such cloud-based model that allows organizations to benefit from a pre-configured platform of essential infrastructure resources. 

In this article, we dive into the use-cases of a PaaS model, and the benefits of modernizing applications with Azure PaaS.

Modernizing Legacy Apps With Azure PaaS

A legacy on-prem framework requires enormous efforts towards provisioning and ongoing maintenance of the underlying infrastructure. In addition to this, managing a platform in-house gets immensely complex with frequent changes in compliance policies and security landscape. For mission-critical applications, ensuring a load-balanced service with distributed traffic additionally requires niche skills as well as considerable financial commitments. 

To help with this, Microsoft offers an HTTP-based Azure PaaS Service (commonly referred to as App Service) for hosting web applications, REST APIs, and mobile application backends on Windows or Linux-based environments.

With App Service, there are no administrative efforts to maintain the base infrastructure where the applications run. This provides an efficient approach to deploy an application on the cloud without worrying about provisioning, configuring, or scaling the platform. 

Azure uses an efficient Service Fabric to ensure that each application in the plan keeps running and that resources can be scaled up or down as needed. Each App Service runs on a virtual machine in a Microsoft Datacenter. By allowing users to easily set the maximum instances of VMs on which they want to run their applications, the Service Fabric then replicates the application across multiple VMs, keeps them running, and balances load across them.

Some features of Azure App Service include:

  • Support for Multiple Programming Languages and Frameworks: Organizations can deploy applications built on a wide variety of frameworks, including .Net Core, NodeJS, Java, PHP, Python, or Ruby. Azure App Service also supports Powershell and other executable scripts as background services.
  • Serverless Code Using Azure Functions: Rather than deploying applications that explicitly require extensive provisioning or management of infrastructure, organizations can run serverless code snippets at a fraction of the compute time cost.
  • App Containerization: Organizations can deploy applications in containers and leverage efficient architectures such as Microservices for enhanced scalability and performance.
  • DevOps Support: Azure allows to set up testing, staging, and production environments with continuous integration and deployment pipelines in line with DevOps practices.
  • Provides CORS support for APIs. Also supports secured authentication, push notification, and offline data sync for mobile apps.
  • In-App SQL databases for storing app data.

Benefits of Azure App Service 

Organizations can benefit from modernizing applications with Azure PaaS in the following ways:

  • High Scalability: Azure allows organizations to scale their applications up or out. With the easy to use Azure Portal, users can set up auto-scale settings based on CPU, memory, and disk utilization levels to support additional application load or stress. Additionally, the Per-App scaling feature allows organizations to allocate and set resources for mission-critical applications selectively. 
  • High Availability: Azure’s App Service SLAs guarantee high availability using the optimum resources. This benefits an organization by leveraging the ability to host its applications across multiple regions through Microsoft’s extensive global datacenter infrastructure.
  • Analytics and Actionable Insights: The Azure portal provides insightful analytics on an application’s health and performance levels. Organizations can also obtain details on the app’s response times, CPU, memory, and disk utilization levels for identifying incident root cause or performance optimization. 
  • Robust Security: App Service provides authentication support through Azure Active Directory, Google, Facebook, Twitter, or Microsoft accounts. Additionally, organizations can control network access of their apps by setting up a priority list of deny/allow IP addresses while benefitting from Azure Virtual Network subnets.
  • Multi-Platform Support: App Service supports different languages and frameworks for app development and deployment, thus allowing for various industry and application-type use cases.

Popular PaaS Use-Cases 

While there are numerous successful use-cases of the PaaS model, the following are some of the most common domains that benefit from it:

  • Datawarehouse/Business Intelligence

Using cloud-based PaaS offerings, organizations can locate insights, generate patterns and predict results to improve business decisions such as forecasting, product design, and investment profits. Due to a number of PaaS-enabled benefits, more and more organizations securely set up and manage data storage such as databases, data warehouses, and data lakes using popular PaaS platforms such as Azure SQL Data Warehouse.

  • Application Hosting

A PaaS model is often considered as an enabler to a Software as a Service (SaaS) model. As a result, for businesses that offer SaaS-based application offerings, PaaS offers an immediate, quick to launch platform of cloud services to deploy, host, run and manage cloud-based applications, APIs, and mobile backends.

  • IoT

The versatility provided by PaaS platforms shown in the range of languages, frameworks, and tools supported allows for IoT deployments and integrations. By supporting to efficiently deploy applications on the edge, organizations can benefit from modernizing applications with Azure PaaS, focusing on an IoT framework.

Summary 

Legacy applications are usually monolithic, expensive to manage and difficult to scale. Outdated software makes it challenging to adapt to new business requirements and hinders an organization’s digital transformation. Adopting a pragmatic approach to app modernization using PaaS platforms provides ways for organizations to refactor these applications for high efficiency. It also helps organizations to take advantage of cloud benefits like economies of scale and scalability.

Azure’s App Service by Microsoft is a cloud-based PaaS offering that provides a fully managed platform that offers auto-scaling, in-app SQL databases, high availability, and robust security to modernize and deploy modern applications. With a growing pattern of emerging technologies such as IoT, Stateful Applications, and Event Stream Processing, the computing paradigm is now at a completely different level than it used to be. This is why it’s critical for businesses to focus on the core application development and its growth, rather than spending efforts on redundant tasks of managing underlying platforms. 

 

To know more about how Optimus can help you migrate your legacy apps to a PaaS model, contact us today.

Events

Nothing Found

Sorry, no posts matched your criteria