Understanding Cloud Computing
Tags: aws, computerscience, webdev, beginners
Published: 2024-06-30 19:43:23

In **Amazon Web Services (AWS)**, "cloud" refers to a broad collection of services and infrastructure that allow users to build, deploy, and manage applications and services through the internet rather than on local servers or personal computers. AWS provides a wide range of cloud computing services, including:

1. **Compute Services**: 

-  Amazon EC2 (Elastic Compute Cloud): Scalable virtual servers.
-  AWS Lambda: Serverless computing to run code without 
-   provisioning servers.
- Amazon ECS (Elastic Container Service): Managed container service.
2. **Storage Services**:

- Amazon S3 (Simple Storage Service): Scalable object storage.
- Amazon EBS (Elastic Block Store): Block storage for use with 
  EC2.
- Amazon Glacier: Low-cost archival storage. 
3. **Database Services**:
- Amazon RDS (Relational Database Service): Managed relational 
  databases.
- Amazon DynamoDB: Managed NoSQL database service.
- Amazon Redshift: Data warehousing service.
4. **Networking Services**:
- Amazon VPC (Virtual Private Cloud): Provisioning of isolated 
  networks.
- AWS Direct Connect: Dedicated network connection to AWS.
- Amazon Route 53: Scalable DNS web service.
5. **Developer Tools**:
- AWS CodeCommit: Source control service.
- AWS CodeBuild: Build and test code.
- AWS CodeDeploy: Automate code deployment.
- AWS CodePipeline: Continuous integration and delivery.
6. **Security and Identity**:
-  AWS IAM (Identity and Access Management): Manage user access 
   and encryption keys.
- AWS KMS (Key Management Service): Create and control 
  encryption keys.
- AWS Shield: DDoS protection.
7. **Management Tools**:
- AWS CloudWatch: Monitoring and observability.
- AWS CloudFormation: Infrastructure as code.
- AWS Systems Manager: Operational data management.
8. **Machine Learning**:
- Amazon SageMaker: Build, train, and deploy machine learning 
  models.
- AWS Deep Learning AMIs: Machine learning and AI.
9. **Analytics**:
- Amazon Kinesis: Real-time data streaming.
- Amazon EMR (Elastic MapReduce): Big data processing using 
  Hadoop and Spark.
- AWS Glue: ETL service.

**Advantages & benefit of cloud computing**
1. **It go global in minutes**: You can deploy your applications around the world at the click of a button.
2. **It stop spending money running and maintaining data centers**: You can focus on building your applications instead of managing hardware.
3. **Benefits from massive economic of scale**: Volume discounts are passed on to you, which provides lower pay-as-you-go prices.
4. **Increase speed and agility**: The provided services allow you to innovate more quickly and deliver your applications faster, giving speed to the market.
5. **Stop guessing capacity**: Your capacity is matched exactly to your demand.
6. **Trade capital expenses for variable expenses **: You pay for what you use instead of making huge upfront investments.
7. **High Availability**: Highly available systems are designed to operate continuously without failure for a long time.These systems avoid loss of service by reducing or managing failures.
8. **Elasticity**: With elasticity, you don't have to plan ahead of time how much capacity you need. You can provision only what you need, and then grow and shrink based on demand.
9. **Durability**: Durability is all about long-term data protection. This means your data will remain intact without corruption.

**CapEx And OpEx**
**Capital Expenditures (CapEx)**
These are upfront purchases toward fixed assets. E.g. Equipment, property, computers and  softwares. 

**Operating Expenses (OpEx)**
These are funds used to run day-to- day operations.E.g research and development, employee salaries, rent and marketing.
 
Cloud Computing Models                    
1. **Infrastructure as a service (IaaS)**.                  
**Building Blocks**
Fundamental building blocks that can be rented.
**Web Hosting**
Monthly subscription to have a hosting company serve your website.
Examples: Amazon Web Services (AWS) EC2, Google Compute Engine, Microsoft Azure.

2. **Software as a service (SaaS).**
**Complete Application**
Using a complete application, on demand, that someone offers to users.
**Email Provider**
Your personal email that you access through a web browser is SaaS.
Examples: Google Workspace (formerly G Suite), Microsoft Office 365, Salesforce.

3. **Platform as a service (PaaS)**.
**Used by Developers**
Develop software using web-based tools without worrying about the underlying infrastructure.
**Storefront Website**
Tools provided to build a storefront application that runs on another company's server.
Examples: Google App Engine, Microsoft Azure App Services, Heroku.

**Cloud Deployment Models**
Cloud deployment models refer to the ways in which cloud computing resources are deployed and managed. There are four primary cloud deployment models:
1.**Public Cloud**:
.Resources are owned and operated by a third-party cloud service provider.
•Services are delivered over the internet.
•Examples include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP)
•Cost-effective and scalable.
•Less control over security and data privacy compared to private clouds.
2.**Private Cloud**:
•Resources are used exclusively by a single organization.
•Can be hosted on-premises or by a third-party provider.
•Offers greater control over security, compliance, and data privacy.
•Typically more expensive than public clouds.
3.**Hybrid Cloud**:
•Combines public and private clouds, allowing data and applications 
to be shared between them.
•Offers greater flexibility and optimization of existing infrastructure.
•Useful for balancing workloads and sensitive data handling.

**Leveraging the AWS Global Infrastructure** 
**Region**: is a geographic area where AWS has multiple, isolated data centers called Availability Zones (AZs). Each Region is designed to be completely independent from the others to enhance fault tolerance and stability.
**Availability Zones(AZs)**: This consist of one or more physically separated data centers, each with redundant power, networking, and connectivity, housed in separate facilities.
Characteristics of AZs
. physical separated 
. connected through low latency links 
. fault tolerant 
. Allows for high availability 
**Edge locations**: These edge locations are strategically positioned around the world to cache and deliver content to end-users with low latency, providing a faster and more reliable user experience.

**The AWS Management Console** :
The AWS Management Console allows you to access your AWS account and manage applications running in your account from a web browser.
The console makes it easy to search for and find services.
**The Root User**
The root user in AWS is the initial user account created when you first set up an AWS account. This user has unrestricted access to all AWS services and resources in the account. 
The root user should be protected with MFA.
**AWS Command Line Interface (CLI)**
The AWS Command Line Interface (CLI) is a unified tool to manage AWS services from the command line. It allows you to interact with AWS services using commands in your terminal or command prompt, providing a powerful way to automate tasks and manage AWS resources programmatically.

**Programming Access**
Programming access in AWS refers to the ability to interact with AWS services using software development tools and libraries, rather than manually through the AWS Management Console. This allows developers to automate tasks, integrate AWS services into their applications, and manage resources programmatically. Here are the main components and tools for programming access in AWS:
1. **Command line interface**: The CLI  allows you to manage AWS 
 services from a terminal session on your laptop.
2. **Application code**: AWS services can be accessed from application code using SDKs and programmatic calls. 
3. **Software Development Kits(SDKs)**;
AWS provides SDKs for various programming languages, including:
• Java
• Python 
• JavaScript
• Ruby
• Go
• PHP
• C++
These SDKs include libraries and sample code to help you get started with integrating AWS services into your applications. They handle tasks such as authentication, request signing, and response parsing.