Understanding Cloud Computing and AWS: A Learning Journey
What is Cloud Computing?
Cloud computing is the on-demand delivery of IT resources over the internet with a pay-as-you-go pricing model. Instead of purchasing and maintaining physical hardware, businesses and individuals can provision IT resources like compute, networking, storage, and analytics as needed. This model eliminates upfront costs and allows for dynamic scalability.
AWS and Its Offerings
Amazon Web Services (AWS) provides a vast range of services across multiple categories to help build scalable and efficient solutions. In my learning journey so far, I’ve explored key AWS services, starting with compute resources like Amazon EC2, AWS Lambda, and container services.
Amazon EC2: Virtual Servers in the Cloud
Amazon Elastic Compute Cloud (EC2) enables users to launch virtual servers, known as EC2 instances, dynamically. These instances belong to different families optimized for various workloads:
- General Purpose: Balanced resources for most applications.
- Compute Optimized: High-performance CPUs for compute-heavy tasks.
- Memory Optimized: Large memory for data-intensive applications.
- Accelerated Computing: GPU or FPGA-based instances for AI and ML workloads.
- Storage Optimized: Optimized for high-speed, high-capacity storage requirements.
Scaling in EC2
- Vertical Scaling: Resizing an instance to a higher or lower capacity.
- Horizontal Scaling: Adding more instances to handle increased load.
- Amazon EC2 Auto Scaling: Automates horizontal scaling by adding or removing instances based on demand.
Load Balancing
Once EC2 instances are scaled out horizontally, distributing traffic efficiently is crucial. Elastic Load Balancer (ELB) ensures incoming requests are balanced across available instances, improving fault tolerance and performance.
EC2 Pricing Models
AWS provides multiple pricing models for EC2 instances:
- On-Demand: Flexible, pay-as-you-go pricing with no long-term commitment.
- Spot Instances: Utilize unused AWS capacity at significantly reduced rates.
- Reserved Instances & Savings Plans: Commit to a specific usage level for cost savings.
Messaging Services: Decoupling Applications
AWS provides messaging services to facilitate communication between system components.
- Amazon Simple Queue Service (SQS): A fully managed message queue service that allows asynchronous communication. Messages remain in the queue until they are processed.
- Amazon Simple Notification Service (SNS): A publish-subscribe messaging service that sends messages to multiple subscribers via email, SMS, push notifications, or HTTP endpoints.
Scenarios for Queuing
- Order Processing System: An e-commerce application places orders into an SQS queue. The backend order processing service picks up orders sequentially, ensuring they are handled efficiently without overloading the system.
- Decoupled Microservices: A large-scale application with multiple microservices uses SQS to pass messages between services. For example, a user uploads a file, and the file processing service picks it up from the queue when resources are available.
- Delayed Job Execution: A scheduled task, such as sending bulk emails, places messages in an SQS queue. A worker service processes these messages at a controlled rate, preventing spikes in system load.
- Logging and Monitoring: System logs are sent to an SQS queue, where a monitoring service processes them asynchronously, improving performance and reliability.
AWS Compute Services Beyond EC2
AWS offers additional compute services tailored for specific use cases:
- Amazon ECS & Amazon EKS: Container orchestration services for running and managing containerized applications. ECS integrates with EC2, while EKS provides Kubernetes as a managed service.
- AWS Fargate: A serverless compute engine for containers, eliminating the need to manage EC2 instances.
- AWS Lambda: A fully managed, event-driven service that allows running code without provisioning or managing servers. You only pay for the execution time.
Key Takeaways
- Cloud computing provides scalable IT resources without upfront costs.
- Amazon EC2 allows flexible virtual machine deployment with multiple instance types and pricing models.
- Auto Scaling and Load Balancing help optimize performance and cost efficiency.
- AWS Messaging Services (SQS & SNS) enable decoupling of application components.
- AWS Compute Services include containers (ECS, EKS, Fargate) and serverless (Lambda), offering flexibility in application deployment.
What’s Next?
I’ll continue my AWS learning journey by diving into networking, storage, and security services. Stay tuned for more insights!
what's more?
I am currently revising and polishing my programming knowledge and other skills that I had learned while I was obtaining my undergraduate degree as well as I am planning to learn JavaScript.
Top comments (0)