Cloud Engineering Academy Week 2

Mark DownsMark Downs
5 min read

Version Control & Git

This week, we explored version control systems, which track code changes, support team collaboration, and allow rollback to previous versions. Git, a distributed version control system, was our main focus—every developer works locally with a full copy of the repository.

Git Concepts & Commands:

  • Repository – Stores all project history.

  • Commit – Saves a snapshot of your work.

  • Branch – Allows isolated work for features or fixes.

Core commands included:

  • git init – Initializes a new Git repository in your current directory.

  • git clone [url] – Clones an existing remote repository to your local machine.

  • git status – Shows the current state of the working directory and staged changes.

  • git add [file] – Stages file(s) to be committed.

  • git add . – Stages all modified and new files.

  • git commit -m “message” – Saves a snapshot of the staged changes with a message.

  • git branch – Lists all branches in the repo.

  • git branch [branch-name] – Creates a new branch.

  • git checkout [branch-name] – Switches to the specified branch.

  • git merge [branch-name] – Merges changes from the specified branch into the current one.

  • git log – Shows the commit history.

  • git diff – Displays differences between file versions or commits.

  • git revert [commit] – Reverts changes made by a specific commit without rewriting history.

  • git reset [commit] – Moves the current branch pointer to a previous commit (can undo commits).

  • git push [remote] [branch] – Pushes your local branch commits to a remote repository.

  • git pull [remote] [branch] – Fetches and merges changes from a remote branch to your current one.

We practiced full Git workflows: creating branches, staging and committing changes, pushing to GitHub, and submitting pull requests for review.

AWS Access Keys vs Key Pairs

We learned the differences between two AWS credential types:

Access Keys

  • Used for AWS CLI, SDKs, and automation.

  • Must be handled securely—rotate frequently, never hard-code, and use IAM roles when possible.

  • Best practices: Use least privilege, CloudTrail monitoring, and secret managers.

Key Pairs

  • Used for SSH access to EC2 Linux instances.

  • Involve asymmetric encryption: a private key (on your machine) and a public key (on the server).

  • Keep keys secure, rotate when needed, and consider AWS Session Manager for production.

Cloud Architecture from First Principles

We broke down cloud systems into core patterns and challenges like failure, scalability, and cost. Real-world architecture should handle unpredictable workloads, component failure, and rapid growth.

Key Concepts:

  • High Availability – Ensures systems remain operational through failure (via load balancers, multi-AZ clusters).

  • Fault Tolerance – Prevents service interruptions even when components fail using redundancy and failover.

  • Scalability – Supports growing or shrinking demand (vertical and horizontal scaling).

  • Load Balancing – Distributes traffic across servers to prevent overload and improve performance.

System Design Elements:

Designing systems in the cloud requires thoughtful planning across several layers to ensure performance, scalability, and maintainability.

  • Requirements

    • Functional: What the system should do (e.g. "users can upload files").

    • Non-functional: How the system performs (e.g. speed, reliability, uptime).

  • Architecture Pattern

    • Choose between monoliths, microservices, serverless, or event-driven designs based on use case.
  • Components

    • Decide on services like EC2 for compute, RDS for relational data, or S3 for storage. These choices impact performance, cost, and scalability.
  • Data Layer

    • Design database schemas and choose between SQL (structured) or NoSQL (flexible) based on the type of data and query patterns.
  • Interfaces

    • Define how components talk to each other (e.g. REST APIs, queues, pub/sub messaging).
  • Security

    • Use encryption, IAM policies, and secure access methods to protect data and services.
  • Scalability

    • Ensure the system can grow to support more users or data (vertical vs. horizontal scaling).
  • Reliability

    • Design for redundancy and failover, so the system continues working during partial failures.
  • Performance

    • Reduce latency and optimize throughput with load balancers, caching, and efficient queries.
  • Maintainability

    • Keep systems modular and organized to support easy updates and team collaboration.
  • Cost

    • Balance performance and resilience with cost—avoid overprovisioning and monitor usage closely.

AWS Well-Architected Framework: 5 Pillars

We were introduced to this framework as a guide for designing reliable, efficient, and cost-effective systems:

  1. Operational Excellence – Streamline operations, automate deployments, and continually improve processes.

  2. Security – Protect data, systems, and assets through strong access control and encryption.

  3. Reliability – Ensure systems can recover from failures and meet demand consistently.

  4. Performance Efficiency – Use the right resources for the workload; scale with demand using elastic services.

  5. Cost Optimization – Avoid unnecessary spend, use pricing models wisely, and track resource usage.

CLI Projects (Quick Overview)

  • S3 CLI Project – Created and managed S3 buckets, uploaded files via CLI.

  • IAM CLI Project – Created IAM users, attached policies, generated access keys.

  • Architecture Design Project – Mapped out a basic cloud system for a web app using EC2, ELB, S3, and RDS to handle requests, ensure availability, and maintain scalability.

Final Thoughts

This week’s deep dive into version control with Git, AWS access management, and cloud architecture fundamentals has laid a strong foundation for building and managing reliable, scalable cloud systems. Understanding these core principles and tools will be essential as I continue to develop my skills and prepare for cloud certifications. I’m excited to apply these concepts in real projects and keep growing in this dynamic field.

0
Subscribe to my newsletter

Read articles from Mark Downs directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mark Downs
Mark Downs