DEV Community

Dina Berry
Dina Berry

Posted on • Originally published at dfberry.github.io on

Cloud-native journey - introduction

I've been working in the Azure cloud for a few years now. The term cloud-native gets used a lot. In an effort to bridge the gap between Azure cloud and cloud-native, I'm investing some time in learning cloud-native approaches to building apps.

Along the way, I'll use and experiment with practices and tools to expedite the end result. Join me along the way, and let me know how you would have proceeded.

To start with, my tool set includes:

This blog will capture the highlights. For the complete picture, head over to the GitHub repo: Cloud native repo.

What is cloud-native?

Prompt : What is cloud-native?

GitHub Copilot : Cloud-native is an approach to building and running applications that takes full advantage of the cloud computing delivery model. It is characterized by the use of containerized applications, microservices architecture, and dynamic orchestration, all of which are designed to be highly scalable, resilient, and agile. The goal of cloud-native is to enable organizations to build and deploy applications faster, with greater flexibility and reliability, while also reducing costs.

How do I begin?

Prompt : Where do I start on a new project for cloud-native?

GitHub Copilot : When starting a new project for cloud-native, there are several steps you can take to ensure that your application is designed for scalability, resilience, and agility. Here are some general steps you can follow:

  1. Choose a cloud platform: Select a cloud platform that meets your needs and provides the services and features you require. Some popular cloud platforms include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).

  2. Define your architecture: Define the architecture of your application, including the components, services, and data stores that you will use. Consider using microservices architecture, which can help you build more scalable and resilient applications.

  3. Use containers: Use containers to package your application and its dependencies, making it easier to deploy and manage your application across different environments.

  4. Use container orchestration: Use a container orchestration platform like Kubernetes to manage your containers and ensure that your application is highly available and scalable.

  5. Use automation: Use automation tools like Ansible, Terraform, or CloudFormation to automate the deployment and management of your application.

  6. Use monitoring and logging: Use monitoring and logging tools to track the performance and health of your application, and to identify and troubleshoot issues.

  7. Use security best practices: Follow security best practices to ensure that your application is secure and protected from attacks.

By following these steps, you can build a cloud-native application that is designed for scalability, resilience, and agility, and that can provide a better experience for your users.

First cloud-native project?

Prompt : What is a simple project I can use for my first cloud-native project?

GitHub Copilot : A simple project that you can use for your first cloud-native project is a web application that allows users to create and manage to-do lists. This project can be built using a microservices architecture, with separate services for user authentication, to-do list management, and data storage.

My perspective

A todo list is perfect, there are plenty of examples:

Architecture

Prompt : Can you suggest a beginning architecture of a todo app which is cloud-native?

GitHub Copilot : here's a beginning architecture for a cloud-native to-do app:

  1. Frontend: A web or mobile app that allows users to create and manage to-do lists. The frontend can be built using a framework like React, Angular, or Vue.js.

  2. API Gateway: An API gateway that serves as the entry point for the application and routes requests to the appropriate microservices. The API gateway can be built using a tool like Kong, Istio, or AWS API Gateway.

  3. Authentication Service: A microservice that handles user authentication and authorization. This service can be built using a tool like Auth0, Okta, or AWS Cognito.

  4. To-Do Service: A microservice that handles the creation, retrieval, updating, and deletion of to-do items. This service can be built using a framework like Express.js, Spring Boot, or Flask.

  5. Database: A database that stores the to-do items and user information. The database can be a SQL or NoSQL database like MySQL, PostgreSQL, MongoDB, or DynamoDB.

  6. Container Orchestration: A container orchestration platform like Kubernetes that manages the deployment and scaling of the microservices. Kubernetes can be used to deploy the microservices as Docker containers and manage their lifecycle.

  7. Monitoring and Logging: A monitoring and logging solution like Prometheus, Grafana, or ELK Stack that provides visibility into the performance and health of the application.

By following this architecture, you can build a cloud-native to-do app that is designed for scalability, resilience, and agility, and that can provide a better experience for your users.

More resources

Read the full conversation: Cloud native repo - introduction.

Top comments (2)

Collapse
 
andleer profile image
Andrew Robinson

Dina, this is really interesting. You hit on a number of my learning targets. Guessing you are ahead of me but I will try to keep up! Looking forward to following your progress.

On the cloud native path, I struggle with cloud native vs cloud agnostic. Not sure both are achievable.

Collapse
 
dfberry profile image
Dina Berry

Andrew, the value of cloud native is still fuzzy to me. Learning the concepts and testing their value is part of the process. Cloud native versus cloud agnostic is also a difficult area. I hope to compare my own experience versus the hype along the way. Please feel free to let me know when you experience is different than mine. I'm here to learn.