Cloud Native Ecosystem / Kubernetes / Software Development / Sponsored / Contributed

How to Simplify Architecture Decisions for Cloud Native Apps

9 Dec 2021 7:30am, by
cloud app

Manish Kapur
Manish is a director of product management at Oracle focusing on Oracle's Application Development Cloud Platform, which includes cloud native application development (Kubernetes, DevOps, container registry, serverless functions), low-code development services and Java services.

Regardless of what it does functionally, every modern app needs to meet a minimum set of requirements for performance, cost, security, regulatory compliance and more.

That’s easier said than done, with users expecting continuous innovation and immediate responsiveness. One way to do that is, of course, to adopt cloud native development practices and tools that fully exploit the advantages of the cloud delivery model. Cloud native applications are developed and deployed to take advantage of distributed computing and exploit the scale, elasticity, resiliency and flexibility that the cloud provides.

But even that can pose challenges. It often means tracking the many fast-changing technology choices available and walking through or creating your decision trees that cover overlapping technology choices, at times from the same vendor, and assessing various architectural permutations using different technology choices.

Additionally, building massively scalable interconnected applications, running across a distributed set of resources in different data centers, is difficult. Sometimes a single failure in such apps can cascade into a big outage or downtime.

These factors significantly increase the complexity as you define the right application architecture and ensure that it aligns with best practices. Furthermore, all of this comes at the expense of the time you would otherwise spend on meeting the demands of your end customers faster.

A modern application-development framework can simplify the architectural decision-making process to help you build and run highly available apps that are resilient to failure, fully secure and compliant, and support DevOps. At Oracle, we’ve crystallized our learning on these things into nine core requirements and 10 design principles that represent our opinionated guidance for building a modern app.

We assume that regardless of what an app does functionally, it needs to meet a minimum set of requirements for availability, security and compliance, cost optimization, performance, resiliency, agility, scalability, observability and portability.

Here are a curated set of 10 guiding principles we use in Oracle Cloud Infrastructure (OCI) that help us govern and decide on the application architecture:

  1. Use lightweight, open source frameworks and mature programming languages.
  2. Build apps as services that communicate through APIs.
  3. Package and ship apps as containers.
  4. Automate build, test and deployment.
  5. Use fully managed services to eliminate complexity in app development, runtimes and data management.
  6. Keep the app tier stateless.
  7. Use converged database with full-featured support across all data.
  8. Instrument end-to-end monitoring and tracing.
  9. Eliminate single point of failure through automated data replication and failure recovery.
  10. Implement a defense-in-depth approach to secure apps and data.

To get developers started with adopting the modern application development framework, we have created opinionated architectures with technology recommendations for the commonly requested patterns.

commonly requested patterns

Use Case: Banco de Chile

One of our enterprise customers, Banco de Chile, has built its mobile banking application (Mi Banco) applying the modern application development best practices on OCI. Mi Banco is its main mobile application to help drive its data transformation strategy, with over 1 million users replicated in two Oracle Cloud regions (Santiago and Ashburn) to guarantee high availability.

high availability

Mi Banco is composed of around 33 microservices defined using a domain-driven design approach, offering many services to the clients like foreign currency exchange, credit card payments, billing payments, simulation and advancing of loans. Each microservice has its own autoscaling policies and allocated resources. Oracle Identity Cloud helps with user access, privilege and authorization.

Using this design, Banco de Chile improved the provisioning time by a thousand-fold, from months to minutes. By implementing continuous integration and delivery (CI/CD) pipelines for deployment of applications to Oracle Kubernetes Engine, it accelerated application delivery from months to a few days. Oracle Autonomous Database’s automatic upgrade and patching features have reduced the bank’s administration costs by 80%.

To learn more about this architecture, you can watch this video, where Leonel Romero at Banco de Chile explains how his team designed and architected this application.

You can advance and future-proof your career by learning OCI for free with our expert-created training and globally recognized certification program.

Lead image via Pexels.