Which Cloud Services do you actually need?
Tags: cloudcomputing, productivity, infrastructureascode
Published: 2023-05-15 18:07:35

_There are over 300 different cloud resources across the various cloud providers, you probably won't need most of them for cloud app development. (When you do, they are an API away)._

You can accomplish a lot with the following foundational cloud resources. In this article, we'll take a look at the foundational building blocks for cloud applications.

**Handlers**: Handlers serve as entry points for executing code or processing events. They help define the logic and actions to be performed when specific events or triggers occur, enabling the execution of the desired functionality.

**Events**: Events are important for event-driven architectures, allowing systems and components to communicate asynchronously. They represent occurrences or changes that can trigger actions or workflows, enabling loosely coupled and reactive systems.

**Queues**: Queues provide reliable and scalable message-based communication between different components or systems. They enable decoupling, ensuring messages are stored until they are processed, improving fault tolerance, scalability, and asynchronous communication.

**Collections**: Collections (such as arrays, lists, or sets) are data structures that help store and organize related data elements. They allow efficient storage, retrieval, and manipulation of data, providing the necessary structure and flexibility for managing and processing data in various application scenarios.

**Buckets**: Buckets are containers for storing data in object storage systems, such as Amazon S3 or Google Cloud Storage. They provide scalable, durable, and highly available storage for files, documents, media assets, or any other type of unstructured data.

**Secrets**: Secrets management involves securely storing and managing sensitive information such as API keys, passwords, or cryptographic keys. Centralized secret management systems help protect sensitive data, control access, and ensure proper handling of confidential information.

**Schedules**: Schedules enable the execution of tasks or actions at specified times or intervals. They are used for automating repetitive or time-based processes, such as data backups, batch processing, or triggering regular maintenance activities.

Let's consider a real-world example of building a cloud-based e-commerce application using all of these resources. 

Each of these resources can be leveraged both in the major clouds (AWS, GCP, and Azure with rapid offline dev) using the [Nitric framework](https://nitric.io).

You can define **handlers** to process events like new orders, order updates, or user registrations. For example, a "NewOrder Service" could trigger actions such as sending order confirmation emails, updating inventory, or initiating payment processing.

**Events** could include new order events, inventory updates, or user registration events. These events would trigger the corresponding handlers to perform the necessary actions.

A **message queue**, like Amazon SQS, could be used to handle asynchronous processing of events. When a new order is placed, an event is sent to the queue, ensuring reliable and scalable communication between components.

**Collections**, could be used to manage product catalogs, customer lists, or order histories. These collections enable efficient storage, retrieval, and manipulation of relevant data within the application.

**Storage buckets**, like Amazon S3, could be used to store product images, user profile pictures, or other media assets associated with the e-commerce application. The buckets provide scalable and durable storage for these unstructured data files.

**Secrets** management systems, such as AWS Secrets Manager or Azure Key Vault, would be utilized to securely store sensitive information like API keys, database credentials, or encryption keys required for secure communication and data protection.

**Scheduled** tasks can be used for regular activities like generating sales reports, performing data backups, or running maintenance routines. For example, a schedule can be set to generate a daily sales report and store it in a specific bucket for further analysis.

By leveraging these resources, the e-commerce application can efficiently handle new orders, process events asynchronously, manage data collections, store media assets securely, protect sensitive information, and automate recurring tasks. This comprehensive set of resources provides the foundation for a scalable, reliable, and secure cloud application.

[Give it a try.](https://nitric.io)