Cloud-native journey - introduction
Tags: cloudnative, cloud, beginners, concept
Published: 2023-10-27 15:43:29

---
title: Cloud-native journey - introduction
published: false
date: 2023-10-27 00:00:00 UTC
tags: Cloudnative,Cloud,Beginner,Concept
canonical_url: http://dfberry.github.io/2023-10-27-cloud-native-introduction
published: true
---

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:

- [Visual Studio Code](https://code.visualstudio.com/).
- [GitHub](https://github.com/) & [GitHub Copilot](https://github.com/features/copilot) (AI pair programming and rubber duck). Copilot provides context-aware answers within Visual Studio code. 

This blog will capture the highlights. For the complete picture, head over to the GitHub repo: [Cloud native repo](https://bit.ly/40aclp8).

## What is cloud-native?[​](#what-is-cloud-native "Direct link to 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?[​](#how-do-i-begin "Direct link to 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?[​](#first-cloud-native-project "Direct link to 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:

- [Todo backend](https://todobackend.com/)
- [TodoMVC](https://todomvc.com/)
- [Swagger API spec](https://github.com/nickfun/learning-guardrail/blob/master/server.yaml)
- [Postman collection of tests](https://github.com/nickfun/learning-guardrail/blob/master/postman-collection.json)

## Architecture[​](#architecture "Direct link to 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[​](#more-resources "Direct link to More resources")

Read the full conversation: [Cloud native repo - introduction](https://bit.ly/40aclp8).