Cloud Computing: The Architectural Basis of Modern App Development

Download Ebook
Download Ebook

Last year, businesses across industries heavily focused on various cloud-related initiatives. Some began their cloud adoption journey, while others expanded the cloud-managed workload and optimized existing cloud processes.

Seems like we’re seeing the same trend this year. 

More than 40% of global tech and business leaders plan to increase their investment in cloud-based solutions and get rid of their legacy software. They understand that moving to the cloud is no longer just a smart move – it is an absolute necessity if you intend to make long-term business goals (and actually achieve them).

The problem is, this transition is more complex than most expect. You can’t simply copy all your files from one folder to the cloud and take an early lunch break; moving to the cloud entails complete digital transformation.

But trust us, it will pay off – and we mean that literally and metaphorically.  

The following guide to cloud computing includes some of the basic concepts and benefits and offers some of our more senior peers an insight into our approach to building cloud-based apps. 

What is cloud computing?

Cloud computing is the network of remote servers you can access via the Internet and use to store, process, and manage data. It enables safer and more scalable use of data storage, networks, servers, software, databases, and BI. Cloud architecture is particularly beneficial for individuals and businesses who require additional storage and seek an off-site backup solution. 

Main cloud computing characteristics 

There are five key cloud computing characteristics:

  1. On-demand self-service – access to cloud resources without the involvement of the service provider
  2. Broad network access – access to cloud computing resources via the network through mobile devices, workstations, and standard platforms
  3. Resource pooling – the use of resources from different machines to service multiple customers based on their demand while maintaining their complete privacy  
  4. Rapid elasticity – almost unlimited access to resources to allow businesses to scale up or down based on their needs without having to purchase additional hardware
  5. Measured services  – used for storage, processing, and bandwidth that are compensated for on a pay-per-resource-use model
3 basic types of cloud deployment

There are three cloud deployment models to choose from based on the amount of data you wish to store and who you want to offer access to:

  1. Public cloud allows anyone to access cloud systems, and the infrastructure owner is the entity that delivers the services, not the consumers. The system is easily accessible by a range of customers but is also considered a less secure option than the other two deployment models. Public cloud offers store backup and retrieval services that can be used for free or compensated on a subscription or per-per-use basis.
  2. Private cloud, or the “internal cloud”, represents the opposite of the public cloud deployment model. Private cloud provisions cloud infrastructure to a single customer for exclusive use. It can be run on-premise or owned, operated, and managed by a service provider. It offers greater security, flexibility, and control over the resources, and is suitable for storing sensitive information that can only be accessed by authorized personnel.
  3. Hybrid cloud is a model that leverages both public and private cloud deployment models, delivering seamless performance. Many consider it to offer the best of both worlds since users benefit from greater control, security, and flexibility that comes with public cloud, but at a lower cost. 

Cloud deployment occurs via:

  • Single cloud, which utilizes a single provider or a cloud platform
  • Multi-cloud that utilizes multiple public clouds (e.g., a public cloud to serve as a database, another as a PaaS solution, a single cloud for user authentication, etc.)
  • Hybrid-cloud that utilizes both public and private cloud computing

6 key benefits of cloud computing

Cloud architecture is considered a faster, cheaper, and more scalable alternative to traditional models. By building a cloud-based application, its owners can deploy their solutions worldwide, easily scale to meet customer demand, improve internal collaboration, and run their business more efficiently, with a higher return on investment. 

Benefits of Cloud Computing
  1. High system speed and reliability

While on-premise servers need to be manually updated whenever there’s an increase in data being processed, cloud architecture can be scaled virtually. This is because the majority of providers use multi-cloud deployment models and make the shift to larger servers whenever needed. 

Cloud architecture is also associated with minimum downtime, as cloud-based software doesn’t have to be restricted during updates. Conventional architectures require a ton of resources and manpower to keep the system up-to-date. With cloud systems being physically removed, businesses can take the “out of sight, out of mind” approach to maintaining the system. 

In other words, cloud computing helps organizations maintain optimal speeds and performance, even when processing requirements and workload increase. 

  1. Cost-effectiveness

Cloud architecture doesn’t require any upfront hardware setup, which means lower initial installation costs; thus, it proves to be a budget-friendly option for startups with limited finances. 

Cloud systems are also more affordable long-term. The solution requires less (or no) work on on-premise hardware that calls for an entire team of IT professionals who can manage and maintain the system. What is more, running your operations in the cloud would free the development team to shift their focus to a lot more innovative and inspiring work than bugs and server issues.  

  1. Scalability and flexibility

Cloud architecture is an ideal foundation for growing businesses or those that deal with fluctuating demands in terms of bandwidth. The cloud allows them to scale their capacity up or down, never having to worry about the performance or, on the other hand, paying for more than they are actually using.  

  1. Increased accessibility and collaboration

Remote and hybrid work environments maintain their popularity, and cloud computing solutions work to their advantage. Moving your operations to the cloud will also provide your employees with easier access to data and digital tools through most browsers and mobile devices to download, upload, and share files and information from any place and at any time. 

And with data centralized in one storage accessible from any internet-enabled device, it is much easier to manage and organize information. 

  1. IoT-ready

Businesses already running on the cloud can embrace IoT technologies faster, smoother, and at a much lower cost. For employees and customers, it means gaining all-time access to data via any platform; for businesses, it’s about delivering a more personalized experience.  

  1. Improved security and disaster recovery 

With advanced availability and cybersecurity that come with cloud architecture, businesses have what it takes to conquer the global marketplace. Users are offered a range of features, including encryption, Firewalls, access controls, and more.  

Cloud-based backup and disaster recovery solution is particularly popular with startups and SMBs that don’t have the resources to invest in a recovery system. There’s no need for upfront investment in physical servers that would contain data backups; plus, access to the data in the cloud is more restricted compared to that kept on the hardware. No matter what happens to the machines, you’ll find your data right where you left it.

Best practices for developing cloud-based apps

With the world slowly moving to the cloud, businesses are starting to invest in cloud-based software and apps. But it’s not just because the popularity of cloud architecture is on the rise. Modern software and applications can be quite powerful and intricate solutions, but that also makes them quite tricky to update. This is where all those benefits of cloud computing come in handy. 

To enable seamless system upgrades, we stick to the 3 commandments for cloud-based app development that we noted down over the years:  

  1. Employ microservices architecture

Microservice architecture is a viable solution for building scalable web applications. This development approach involves breaking a complex app into smaller modules to develop multiple features independently. 

Developers use it to build feature-rich and powerful apps that are expected to scale and, as a result, become more difficult to maintain. Microservices are also popular for their high deployment and development speeds, code isolation, and reusability. Ultimately, they give developers room to innovate, build, and update specific features without their work affecting the entire app. 

  1. Use cloud-native technologies

As their name suggests, cloud-native technologies are built to run on cloud architecture. They guarantee high speeds, scalability, and easy access to data in the cloud, all at reasonable costs. Some of the most commonly employed cloud-native technologies include:

  • Cloud-native databases, explicitly designed for cloud infrastructure to perform automatic data backup and consistent uptime,
  • Kubernetes, used to automate app scaling, deployment, and maintenance, thus successfully managing containerized apps, and
  • Serverless computing that enables developers to build and run app code on a pay-per-use system.
  1. Implement DevOps practices

We left this one last intentionally, as it’s not for everyone. Though DevOps practices can contribute to faster and better software delivery, a more stable environment, and better resource utilization, they can be quite resource-intensive. Still, for those of you who can afford it, we suggest integrating the following practices into your cloud-app development process:

  • Continuous integration of code alterations into a shared repository to test each automatically and instantly work on debugging
  • Continuous delivery and prompt code deployment (once the QA approves it)
  • Automation of all testing processes
  • Implementation of security procedures through the development cycle

Inviggo’s approach the cloud-based application development

Inviggo development teams have worked on several greenfield projects and invested in building our own digital products. 

We faced a unique set of challenges with every new project we took on, prompting us to always research new solutions.  

In this next section, we’ll walk you through one of our more recent projects and tell you a bit more about building the cloud architecture in Azure. The visual below is a schematic representation of our project logic, with the database and web app in the center, which holds the entire business logic.

 

Azure Setup

Let’s review each piece of technology from our stack individually. 

Azure App Service

Azure App Service is an HTTP-based hosting service that supports Java, JavaScript, .NET, and Python applications. It is a fully-managed Platform as a Service (PaaS) popular among developers working on cloud-based apps because it offers:

  • great CI/CD integration
  • relatively easy setup, integration, and support for multiple programming languages and frameworks
  • deployment slots to run multiple versions of the app code on the same infrastructure
  • simple scalability
  • automatic patching and maintenance of the OS and language frameworks
  • ISO, SOC, and PCI compliance

CosmosDB 

We chose CosmosDB because NoSQL proved more beneficial than SQL for this particular project. It enables building highly responsive apps and delivers better performance, conducts automatic indexing, and the price scales nicely with the number of users. 

CosmosDB is characterized by a single-digit millisecond response time and assures business continuity thanks to high security and SLA-backed availability. This means optimal speeds are guaranteed at any scale, delivering fast global access and instant elasticity. 

It offers turnkey multi-region data distribution, necessary to achieve low latency and high availability. This, combined with open-source APIs, ensures simpler and faster app development. Finally, its automatic end-to-end database management, updates, and patching take database administration out of the equation.


Azure DevOps

We use Azure DevOps as source control for our codebase. It enables us to build, test, and deploy a range of technologies, including Node.js, Python, Java, PHP, Ruby, C#, C++, .NET, and more. Azure DevOps also works with Android and iOS applications and can run the apps in parallel on macOS, Windows, and Linux. 

Azure Pipelines came in handy for build and release as it combines continuous integration (CI), continuous delivery (CD), and testing to build, test, and deliver the code to any destination. It can deploy a code to multiple targets, including cloud and on-premises platforms, virtual machines, containers, and PaaS services. Finally, it comes with integrated issues and project tracking flow. 

We also use Azure Key Vault to keep secrets like connection strings and API keys. 

Ultimately, Azure DevOps represents a quick, easy, and secure way to automate building your development projects without worrying about the consistency and quality of the code. 


Application Insights

Aplication Insights is an extension of Azure Monitor, a comprehensive monitoring solution used for collecting, analyzing, responding, and monitoring data from the cloud and on-premises environments. Application Insights oversees the entire system as it provides application performance monitoring (APM) features and tools that aid in monitoring app development projects across all app phases: development, testing, and production. 

Application Insights comes with many essential features and functionalities, including:

  • Collection and storage of trace logging data
  • Live metrics tracking, which means receiving requests in real-time, finding potential bottlenecks, and overseeing potential bugs.
  • Instant mobile notifications regarding any issues
  • Synthetic transaction monitoring, which enables probing the external endpoints of the app to test its availability and responsiveness
  • Smart failure and anomalies detection
  • Integration with GitHub and Azure DevOps.

Firebase

Firebase is an authentication and authorization provider we chose to skip building our solutions from scratch and because all team members already have experience working with the platform.

We used the Firebase Authentication feature to make sure all users receive personalized experiences across different devices while their data is securely stored in the cloud. Firebase Authentication offers backend services, ready-made UI libraries, and simple-to-use SDKs. It enables user authentication via email and passwords, phone number, or by integrating with federated identity providers, meaning users can sign in using their Google, Facebook, Twitter, or GitHub accounts. 


Application Gateway

Azure Application Gateway is a web traffic load balancer that provides a suite of fully-manged solutions for various scenarios. We prefer it to other solutions because of its safety and security features.

Azure Application Gateway:

  • Uses WAF to protect apps against L7 layer DDoS protection
  • Secures apps against L3 and L4 DDoS attacks
  • Allows you to embrace a zero-trust access model
  • Eliminates the risk of data exfiltration
  • Provides a centralized security experience, ensuring consistent security features across applications 

5 best practices for building cloud-based applications in Azure

Following Azure best practices helps improve your workload and develop a more efficient, stable, and quality cloud infrastructure. The Well-Architected Framework is built on five pillars of architectural excellence, thus providing a consistent approach to the evaluation and implementation of scalable designs:

  1. Reliability pillar covers the ability of the workload to accurately and consistently perform intended functions and ensure quick failure recovery so that the application runs with minimum downtime. 
  2. Security pillar focuses on protecting information and systems throughout the entire development process. It encompasses topics like user permission management, confidentiality, and data integrity, offering protection from various threats, such as DDoS attacks and network intrusions.
  3. Cost optimization pillar focuses on avoiding unnecessary costs by helping understand smart resource allocation and spending over time to ensure high profits and return on investment.
  4. Operational excellence pillar encompasses practices for the continual optimization of operational processes that keep the application running in production. It covers topics like automating deployments and changes to reduce the error rate, improving response to events, defining standards for managing daily operations, and redesigning processes to enable quick releases of new features and bug fixes. 
  5. Performance efficiency pillar deals with the efficient scaling of your workload to meet user demands. It covers the structured and streamlined allocation of  IT and computing resources, smart selection of resource types and sizes, and performance monitoring. Some of the best practices include

    - Autoscaling (dynamically allocating resources to match performance requirements)
    - Running background tasks (batch jobs, intensive processing tasks, and long-running processes like workflows)
    - Cashing data (temporarily copying frequently accessed data to fast storage)
    - CDNs (efficiently deliver web content to users)
    - Data partitioning (to improve scalability, performance, security, and availability, provide operational flexibility, and match data storage to the pattern of use)

How we ensure cost-efficiency

As mentioned earlier in the article, profitability is one of the top advantages of building cloud-based solutions. To maximize ROI for the project at hand, we are very mindful when it comes to the selection of resources and, we utilize Azure’s pricing calculators to estimate the costs:

  • Azure Pricing Calculator, an intuitive tool that can be used to estimate hourly or monthly costs of Azure services, and 
  • Total Cost of Ownership (TCO) Calculator comes in handy when the project involves using various tech on-premise. Relying on the project planning phase findings, we enter the requirements related to the use of servers, databases, storage, and networking, and TCO provides us with a pretty solid estimate.