-
Notifications
You must be signed in to change notification settings - Fork 1
cloud native
-
cloud-native designe is a mindset.
-
Cloud-native: is a term used to describe applications and services that are designed, developed, and deployed specifically for cloud computing environments. These applications take full advantage of the characteristics and features of cloud infrastructure, such as scalability, availability, and automation, to deliver better performance, increased efficiency, and reduced costs. A cloud-native approach focuses on microservices architecture, containerization, and continuous integration/continuous deployment (CI/CD) practices. This allows for faster innovation cycles and the ability to easily deploy and update individual components without disrupting the entire system. Overall, the goal of cloud-native is to deliver a more agile, flexible, and scalable computing environment that can respond to changing business needs and take advantage of new technologies as they emerge.
-
methodology ~= best practice
-
follow 12-factor --> cloud-native.
-
an application could be cloud-native but not follow all principles of 12-factor
-
Cloud agnostic: refers to a system, application, or service that is not tied to a specific cloud computing platform and can be run on any cloud infrastructure. This means that the system can be moved or deployed to any cloud provider (such as AWS, Azure, Google Cloud, etc.) without any modification or rewriting of the code. The goal of cloud agnosticism is to provide flexibility and freedom to choose the best cloud solution for a particular use case, while avoiding vendor lock-in and reducing the risk of obsolescence.
-
Mindset, methodology, design, architecture, and design pattern are related but distinct concepts in software development and technology.
-
Mindset refers to a particular way of thinking or attitude towards a particular subject or situation. In the context of software development and technology, a cloud-native mindset would refer to an approach that prioritizes scalability, agility, and innovation in designing and deploying applications and services on cloud infrastructure.
-
Methodology refers to a systematic, repeatable approach to solving a problem or achieving a goal. In the context of software development, a methodology is a set of practices, processes, and tools used to design, develop, and deploy software applications and systems. For example, Agile methodology is a popular approach to software development that emphasizes collaboration, flexibility, and rapid iteration.
-
Design refers to the process of creating a plan or blueprint for a product, service, or system. In the context of cloud-native, design would refer to the process of creating a plan for how the application or service will take advantage of the cloud infrastructure to achieve scalability, availability, and other desired outcomes.
-
Architecture refers to the high-level structure and organization of a system or application. It involves defining the components, relationships, and interfaces of a system, and determining how it will operate and scale to meet the needs of the business. In the context of cloud-native, architecture would involve designing the application or service to take advantage of the cloud infrastructure to achieve scalability, availability, and other desired outcomes.
-
Design patterns are reusable solutions to common problems that arise in software development. They provide a general solution to a commonly occurring problem in a context. Design patterns can be used to solve problems in a variety of domains, including architecture, user interface, and database design. They are not specific to cloud-native, but can be applied in a cloud-native context to help solve common problems and improve the design and implementation of cloud-native applications and services.
-
In summary, the mindset is an attitude or approach, methodology is a systematic set of practices, design is the process of creating a plan, architecture is the high-level structure of a system, and design patterns are reusable solutions to common problems in software development.
-
Greenfield and spaghetti are terms used to describe different approaches to software development and technology projects.
-
Greenfield refers to a completely new and untested development project, where the focus is on building something from scratch and starting fresh with a clean slate. In the context of cloud-native, a greenfield project would involve designing and building new applications or services from the ground up to take full advantage of cloud infrastructure and cloud-native principles.
-
Spaghetti, on the other hand, refers to a complex and convoluted system that has evolved over time and is difficult to manage, maintain, or change. In the context of cloud-native, a spaghetti system would involve trying to retrofit an existing legacy application or service to run on cloud infrastructure, which can be challenging due to the complex and interdependent nature of the system.
-
Greenfield projects offer more opportunities to take advantage of cloud-native principles and best practices, while spaghetti projects can require more time, effort, and resources to modernize and integrate with cloud infrastructure.
- A cloud-native data center is a type of data center that is designed to support cloud computing and cloud-native applications. It is built to take full advantage of the capabilities of cloud infrastructure, such as scalability, elasticity, and automation, to provide a flexible, cost-effective, and highly available computing environment. In a cloud-native data center, the infrastructure is abstracted away from the underlying hardware, allowing applications to run on any server or cluster of servers, regardless of location or physical hardware. This enables organizations to easily provision and manage computing resources on-demand, in a way that is highly scalable and resilient. A cloud-native data center typically uses a software-defined infrastructure, where network, storage, and computing resources are managed and provisioned programmatically, rather than through manual configuration. This enables the data center to be highly automated and enables organizations to quickly respond to changing demand for resources.
- In summary, a cloud-native data center is designed to support cloud computing and cloud-native applications, and leverages the capabilities of cloud infrastructure to provide a flexible, cost-effective, and highly available computing environment.
The Twelve-Factor App is a methodology for building software-as-a-service (SaaS) apps that are optimized for cloud computing environments. It consists of twelve principles or factors that provide a set of guidelines for designing and developing cloud-native applications. The twelve factors are:
Codebase: One codebase tracked in revision control, many deploys.
Dependencies: Explicitly declare and isolate dependencies. (dependency management)
Config: Store config in the environment.
Backing Services: Treat backing services as attached resources.
Build, release, run: Strictly separate build and run stages.
Processes: Execute the app as one or more stateless processes.
Port binding: Export services via port binding.
Concurrency: Scale out via the process model.
Disposability: Maximize robustness with fast startup and graceful shutdown.
Dev/prod parity: Keep development, staging, and production as similar as possible.
Logs: Treat logs as event streams.
Admin processes: Run admin/management tasks as one-off processes.
Adhering to these principles can help ensure that applications are designed for cloud environments and can take advantage of the benefits of cloud computing, such as scalability, resilience, and cost-effectiveness.