<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Posts on mmb198 blog site</title>
		<link>https://mmb198.github.io/en/posts/</link>
		<description>Recent content in Posts on mmb198 blog site</description>
		<generator>Hugo -- gohugo.io</generator>
		<language>en-au</language>
		<copyright>mmb198</copyright>
		<lastBuildDate>Tue, 07 May 2024 19:47:57 +0800</lastBuildDate>
		<atom:link href="https://mmb198.github.io/en/posts/index.xml" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Cloud Engineer Academy Module 4 Blog - Linux and Bash chmod</title>
			<link>https://mmb198.github.io/en/posts/ca_module4/</link>
			<pubDate>Tue, 07 May 2024 19:47:57 +0800</pubDate>
			
			<guid>https://mmb198.github.io/en/posts/ca_module4/</guid>
			<description>chmod numeric chmod (change mode) is a command in Linux and other Unix-like operating systems that allows you to change the permissions (read, write, execute) of files and directories.
In Linux, permissions are represented by three sets of characters: user (owner), group, and others. Each set consists of three characters representing the read (r), write (w), and execute (x) permissions. These permissions can be represented numerically as well, where read=4, write=2, and execute=1.</description>
			<content type="html"><![CDATA[<h1 id="chmod-numeric">chmod numeric</h1>
<p>chmod (change mode) is a command in Linux and other Unix-like operating systems that allows you to change the permissions (read, write, execute) of files and directories.</p>
<p>In Linux, permissions are represented by three sets of characters: user (owner), group, and others. Each set consists of three characters representing the read (r), write (w), and execute (x) permissions. These permissions can be represented numerically as well, where read=4, write=2, and execute=1.</p>
<p>Let&rsquo;s break down <code>chmod 777</code> and <code>chmod 421</code>:</p>
<ol>
<li>
<p><code>chmod 777</code>: This command sets the file permissions to allow read, write, and execute for the user, group, and others.</p>
<ul>
<li>The first digit (7) refers to the permissions for the user/owner.</li>
<li>The second digit (7) refers to the permissions for the group.</li>
<li>The third digit (7) refers to the permissions for others.</li>
</ul>
<p>Each digit is a sum of the permission values:</p>
<ul>
<li>4 for read</li>
<li>2 for write</li>
<li>1 for execute</li>
</ul>
<p>So, 7 represents read (4) + write (2) + execute (1), meaning all permissions are granted.</p>
</li>
<li>
<p><code>chmod 421</code>: This command sets the file permissions differently.</p>
<ul>
<li>The first digit (4) refers to the permissions for the user/owner.</li>
<li>The second digit (2) refers to the permissions for the group.</li>
<li>The third digit (1) refers to the permissions for others.</li>
</ul>
<p>These values mean:</p>
<ul>
<li>For the user/owner: read (4)</li>
<li>For the group: write (2)</li>
<li>For others: execute (1)</li>
</ul>
</li>
</ol>
<p>So, <code>chmod 421</code> grants read permission to the owner, write permission to the group, and execute permission to others.</p>
<p>Common numeric representations in <code>chmod</code> are used to set permissions on files and directories in Linux and other Unix-like operating systems. Here are some common ones:</p>
<ol>
<li>
<p><strong>chmod 777</strong>: This gives full permissions to the owner, group, and others.</p>
<ul>
<li>The first digit (7) represents permissions for the owner (user).</li>
<li>The second digit (7) represents permissions for the group.</li>
<li>The third digit (7) represents permissions for others.</li>
<li>In binary, 7 translates to 111, indicating read (4) + write (2) + execute (1) permissions for each category.</li>
</ul>
</li>
<li>
<p><strong>chmod 755</strong>: This gives the owner full permissions and read/execute permissions to the group and others.</p>
<ul>
<li>The first digit (7) represents permissions for the owner (user).</li>
<li>The second digit (5) represents permissions for the group.</li>
<li>The third digit (5) represents permissions for others.</li>
<li>In binary, 7 translates to 111 (read + write + execute), and 5 translates to 101 (read + execute).</li>
</ul>
</li>
<li>
<p><strong>chmod 644</strong>: This gives the owner full permissions and read-only permissions to the group and others.</p>
<ul>
<li>The first digit (6) represents permissions for the owner (user).</li>
<li>The second digit (4) represents permissions for the group.</li>
<li>The third digit (4) represents permissions for others.</li>
<li>In binary, 6 translates to 110 (read + write), and 4 translates to 100 (read).</li>
</ul>
</li>
<li>
<p><strong>chmod 600</strong>: This gives the owner full permissions and no permissions to the group and others.</p>
<ul>
<li>The first digit (6) represents permissions for the owner (user).</li>
<li>The second and third digits (0) represent no permissions for the group and others.</li>
<li>In binary, 6 translates to 110 (read + write), and 0 means no permissions.</li>
</ul>
</li>
<li>
<p><strong>chmod 755</strong>: This gives the owner full permissions and read/execute permissions to the group and others.</p>
<ul>
<li>The first digit (7) represents permissions for the owner (user).</li>
<li>The second digit (5) represents permissions for the group.</li>
<li>The third digit (5) represents permissions for others.</li>
<li>In binary, 7 translates to 111 (read + write + execute), and 5 translates to 101 (read + execute).</li>
</ul>
</li>
</ol>
<h1 id="chmod-symbolic-links">chmod symbolic links</h1>
<p>In addition to numeric representations, <code>chmod</code> in Linux also supports symbolic representations. These representations are more intuitive and easier to understand for some users, especially when making specific changes to permissions.</p>
<p>Here&rsquo;s how symbolic representations work:</p>
<ul>
<li><strong>u</strong> stands for user/owner.</li>
<li><strong>g</strong> stands for group.</li>
<li><strong>o</strong> stands for others.</li>
<li><strong>a</strong> stands for all (equivalent to <strong>ugo</strong>).</li>
</ul>
<p>And the symbols for permissions are:</p>
<ul>
<li><strong>r</strong> stands for read.</li>
<li><strong>w</strong> stands for write.</li>
<li><strong>x</strong> stands for execute.</li>
</ul>
<p>Here are a few examples:</p>
<ol>
<li>
<p>To give the owner read and write permissions:</p>
<pre tabindex="0"><code>chmod u+rw filename
</code></pre></li>
<li>
<p>To remove execute permission from the group:</p>
<pre tabindex="0"><code>chmod g-x filename
</code></pre></li>
<li>
<p>To give everyone execute permission:</p>
<pre tabindex="0"><code>chmod a+x filename
</code></pre></li>
<li>
<p>To give the owner read and execute permissions, and the group write permission:</p>
<pre tabindex="0"><code>chmod u+rx,g+w filename
</code></pre></li>
<li>
<p>To set all permissions to just read and write:</p>
<pre tabindex="0"><code>chmod a=rw filename
</code></pre></li>
</ol>
<p>So, instead of using numeric values like <code>chmod 777</code> or <code>chmod 421</code>, symbolic representations allow you to specify the changes you want to make directly.</p>
<h1 id="chmod-exercise">chmod exercise</h1>
<p>Commands:</p>
<p>clear</p>
<p>ls -l</p>
<p># Readable by all</p>
<p>chmod 444 class_notes.txt</p>
<p>ls -l</p>
<p># Allow Owner to Write, readable by all</p>
<p>chmod 644 class_notes.txt</p>
<p>ls -l</p>
<p># Allow owner to Execute, readable by all</p>
<p>chmod 744 class_notes.txt</p>
<p>ls -l</p>
<p># Adding Execute Permissions for the Group</p>
<p>chmod 774 class_notes.txt</p>
<p>ls -l</p>
<p># Revoking Write Access from the Group</p>
<p>chmod 754 class_notes.txt</p>
<p>ls -l</p>
<p>Results:
<img src="/module4.png" alt="File permissions exercise CLI"></p>
]]></content>
		</item>
		
		<item>
			<title>Cloud Engineer Academy Module 3 Blog - System Design and Architecture</title>
			<link>https://mmb198.github.io/en/posts/ca_module3/</link>
			<pubDate>Sun, 21 Apr 2024 21:32:09 +0800</pubDate>
			
			<guid>https://mmb198.github.io/en/posts/ca_module3/</guid>
			<description>The Cyber Engineering Academy started as a 12 week course with a new subject per week (12 weeks = 12 subjects) but this was a little ambitious! The reality is that a single week for AWS (week 5), isn&amp;rsquo;t enough time so this timeline has been blown out. I&amp;rsquo;ll now be referring to modules rather than weeks.
Module 3 - System Design and Architecture This module covered common architecture types (monolithic, microservices and serverless), Application Programmable Interfaces (APIs), Load Balancers and cloud storage options (object, block and file).</description>
			<content type="html"><![CDATA[<p>The Cyber Engineering Academy started as a 12 week course with a new subject per week (12 weeks = 12 subjects) but this was a little ambitious! The reality is that a single week for AWS (week 5), isn&rsquo;t enough time so this timeline has been blown out. I&rsquo;ll now be referring to modules rather than weeks.</p>
<p>Module 3 - System Design and Architecture
This module covered common architecture types (monolithic, microservices and serverless), Application Programmable Interfaces (APIs), Load Balancers and cloud storage options (object, block and file).</p>
<p>I&rsquo;m only doing a short summary for the blog as I&rsquo;m posting the architecture project below and it covers in detail all three architecture types, explains use cases and advantages and disadvantages for architecture type.</p>
<h2 id="part-1-monolithic-architecture-design">Part 1: Monolithic Architecture Design</h2>
<p><strong>Core Functionalities:</strong></p>
<ol>
<li>User registration</li>
<li>Product catalog</li>
<li>Shopping cart</li>
<li>Order processing</li>
</ol>
<p><strong>High-Level Architecture Diagram:</strong></p>
<pre tabindex="0"><code>|------------------------|
|         Frontend       |
|------------------------|
            |
            v
|------------------------|
|    Business Logic      |
|      (Monolith)        |
|------------------------|
            |
            v
|------------------------|
|        Database        |
|------------------------|
</code></pre><p><strong>Advantages:</strong></p>
<ul>
<li><strong>Simplicity and Uniformity:</strong> Easy to develop, deploy, and manage as everything is contained within a single codebase.</li>
<li><strong>Ease of Deployment:</strong> Deployment is straightforward as there&rsquo;s only one unit to deploy.</li>
</ul>
<p><strong>Disadvantages:</strong></p>
<ul>
<li><strong>Scalability:</strong> Scaling the application can be challenging as all components are tightly coupled, making it difficult to scale individual parts independently.</li>
<li><strong>Flexibility:</strong> Changes or updates to one part of the application may require redeploying the entire monolith.</li>
<li><strong>Deployment:</strong> Scaling the monolith horizontally can be costly and inefficient.</li>
</ul>
<h2 id="part-2-refactoring-into-microservices">Part 2: Refactoring into Microservices</h2>
<p><strong>Identified Microservices:</strong></p>
<ol>
<li>User Service</li>
<li>Product Service</li>
<li>Cart Service</li>
<li>Order Service</li>
</ol>
<p><strong>Updated Architecture Diagram:</strong></p>
<pre tabindex="0"><code>|------------------------|
|         Frontend       |
|------------------------|
            |
            v
|------------------------|
|     User Service       |
|------------------------|
            |
            v
|------------------------|
|    Product Service     |
|------------------------|
            |
            v
|------------------------|
|     Cart Service       |
|------------------------|
            |
            v
|------------------------|
|    Order Service       |
|------------------------|
            |
            v
|------------------------|
|     Database(s)        |
|------------------------|
</code></pre><p><strong>Advantages:</strong></p>
<ul>
<li><strong>Scalability:</strong> Each microservice can be scaled independently based on demand, allowing for more efficient resource utilisation.</li>
<li><strong>Flexibility:</strong> Changes or updates to one microservice can be made without affecting others, enabling faster development and deployment.</li>
<li><strong>Deployment:</strong> Each microservice can be deployed independently, facilitating Continuous Deployment/Continuous Integration (CI/CD) practices.</li>
</ul>
<p><strong>Challenges:</strong></p>
<ul>
<li><strong>Development Complexity:</strong> Managing multiple services can increase development complexity, especially in terms of communication between services.</li>
<li><strong>Deployment:</strong> Coordinating deployments across multiple services requires careful orchestration to maintain consistency and avoid service disruptions.</li>
<li><strong>Consistency:</strong> Ensuring consistency in data management and transactions across distributed services can be challenging.</li>
</ul>
<h2 id="part-3-incorporating-serverless-architecture">Part 3: Incorporating Serverless Architecture</h2>
<p><strong>Identified Serverless Components:</strong></p>
<ol>
<li>User Authentication</li>
<li>Payment Processing</li>
</ol>
<p><strong>Updated Architecture Diagram:</strong></p>
<pre tabindex="0"><code>|------------------------|
|         Frontend       |
|------------------------|
             |
             v
|------------------------|
|    User Authentication |  (Serverless)
|------------------------|
             |
             v
|------------------------|
|   Product &amp; Order APIs |  (Microservices)
|------------------------|
             |
             v
|------------------------|
|   Payment Processing   |  (Serverless)
|------------------------|
             |
             v
|------------------------|
|     Database(s)        |
|------------------------|
</code></pre><p><strong>Benefits of Serverless Architecture:</strong></p>
<ul>
<li><strong>Scalability:</strong> Serverless functions auto-scale based on demand, ensuring resources are efficiently utilised and reducing the risk of over-provisioning.</li>
<li><strong>Cost:</strong> Serverless architectures offer cost savings as you only pay for the resources consumed during execution, rather than provisioning fixed resources.</li>
<li><strong>Operational Management:</strong> Serverless providers handle server management, scaling, and maintenance, reducing operational overhead for the development team.</li>
</ul>
<p><strong>Challenges:</strong></p>
<ul>
<li><strong>Cold Start:</strong> Serverless functions may experience latency during cold starts, impacting the responsiveness of the application.</li>
<li><strong>Vendor Lock-in:</strong> Adopting serverless architectures may lead to vendor lock-in due to reliance on specific cloud providers&rsquo; services and APIs.</li>
<li><strong>Debugging and Monitoring:</strong> Debugging and monitoring serverless functions can be more challenging compared to traditional architectures.</li>
</ul>
<p><strong>Comparison Report:</strong></p>
<ol>
<li>
<p><strong>Scalability:</strong></p>
<ul>
<li>Monolithic: Limited scalability due to tight coupling.</li>
<li>Microservices: Highly scalable, each service can be scaled independently.</li>
<li>Serverless: Autoscaling capabilities offer efficient resource utilisation.</li>
</ul>
</li>
<li>
<p><strong>Development Complexity:</strong></p>
<ul>
<li>Monolithic: Simple development but can become complex as the application grows.</li>
<li>Microservices: Increased complexity due to managing multiple services.</li>
<li>Serverless: Simplifies development by abstracting infrastructure management, but can be complex in orchestrating functions.</li>
</ul>
</li>
<li>
<p><strong>Deployment:</strong></p>
<ul>
<li>Monolithic: Simple deployment but requires redeployment of the entire application for updates.</li>
<li>Microservices: Requires careful orchestration for deployment across multiple services.</li>
<li>Serverless: Facilitates easy and rapid deployments of individual functions.</li>
</ul>
</li>
<li>
<p><strong>Maintenance:</strong></p>
<ul>
<li>Monolithic: Maintenance can be cumbersome, especially for large applications.</li>
<li>Microservices: Each service needs to be maintained individually.</li>
<li>Serverless: Reduces operational overhead as infrastructure management is handled by the provider.</li>
</ul>
</li>
<li>
<p><strong>Cost Implications:</strong></p>
<ul>
<li>Monolithic: Fixed infrastructure costs regardless of usage.</li>
<li>Microservices: Costs may vary based on the number of services and their usage.</li>
<li>Serverless: Cost-efficient as you only pay for actual usage.</li>
</ul>
</li>
</ol>
<p><strong>Suitability for Different Projects:</strong></p>
<ul>
<li>Monolithic: Suitable for small-scale projects with predictable usage.</li>
<li>Microservices: Ideal for large-scale projects with complex requirements and variable loads.</li>
<li>Serverless: Well-suited for projects with sporadic or unpredictable workloads and where cost optimisation is crucial.</li>
</ul>
<p>Each architectural style has its strengths and weaknesses, and the choice depends on the specific requirements, scale, and constraints of the project.</p>
]]></content>
		</item>
		
		<item>
			<title>Cloud Engineer Academy Module 2 Blog - Git &amp; Cloud Architecture</title>
			<link>https://mmb198.github.io/en/posts/ca_week2/</link>
			<pubDate>Wed, 21 Feb 2024 21:37:43 +0800</pubDate>
			
			<guid>https://mmb198.github.io/en/posts/ca_week2/</guid>
			<description>Version Control Learnt about 3 main types of version control systems: 1. Local: All repositories/data are only held and accessible from a local machine, making it difficult to collaborate with others. 2. Centralised: The repository is kept on a main server, any updates have to be committed to the central server. 3. Distributed: Repositories are distributed across end users and servers. Any of the users or servers can act as the central repository.</description>
			<content type="html"><![CDATA[<h1 id="version-control">Version Control</h1>
<p>Learnt about 3 main types of version control systems:
1. Local: All repositories/data are only held and accessible from a local machine, making it difficult to collaborate with others.
2. Centralised: The repository is kept on a main server, any updates have to be committed to the central server.
3. Distributed: Repositories are distributed across end users and servers. Any of the users or servers can act as the central repository.</p>
<h1 id="git">GIT</h1>
<ul>
<li>Set up a GitHub account, configured MFA and ssh access. Command to check that ssh is connected **ssh -T <a href="mailto:git@github.com">git@github.com</a></li>
<li>Installed git in Windows and Linux and set up CLI access via ssh.
<ul>
<li>SSH encrypts the data flow between my machine and github, ensuring confidentiality in the transmission of data that I commit to the repo.</li>
</ul>
</li>
</ul>
<h1 id="aws-cli">AWS CLI</h1>
<ul>
<li>Installed the AWS CLI in Windows and Linux</li>
<li>Added security keys in AWS console and installed them into AWS CLI. This now enables control of my AWS account through the CLI. The CLI is definitely faster than clicking and confirming through the console.</li>
<li>Command structure:
aws + service type + what you want to do, examples:
aws + s3 service + list files = <strong>aws s3 ls</strong>
aws + iam + list access keys = <strong>aws iam list-access-keys</strong></li>
</ul>
<h1 id="cloud-architecture--system-design">Cloud Architecture &amp; System Design</h1>
<h2 id="front-end-vs-back-end">Front end vs back end</h2>
<ul>
<li>Front end = user facing, interacts with the backend via API&rsquo;s (Application Programming Interface).</li>
<li>Back end = All of the infrastructure and applications that enables the front end to function.</li>
</ul>
<h2 id="vertical-vs-horizontal-scaling">Vertical vs Horizontal scaling</h2>
<ul>
<li>Vertical scaling = increasing or decreasing the size of the hardware - such as EC2 t2.micro, t2.small, t2.medium etc. As the size increases additional hardware is provided such as more CPU cores and memory.</li>
<li>Horizontal scaling = Instead of increasing hardware capacity as with vertical scaling, horizontal scaling instead increases the amount of instances. Instead of increasing from a t2.micro instance to a single t2.small instance, you could run 3 x t2.micro instances. This provides additional computing resources and also provides redundancy as there are now two extra compute instances in the event that one of them becomes unresponsive or crashes.</li>
</ul>
<h2 id="load-balancing">Load Balancing</h2>
<p>These can be hardware or software that distributes data across your infrastructure. Is used to ensure that a server isn&rsquo;t being overloaded while other servers are sitting idle. Can also decide which server is closest to the end user in order to reduce latency for their request.</p>
<h2 id="high-availability-and-fault-tolerance">High Availability and Fault Tolerance</h2>
<ul>
<li>High availability = Redundancy within a network that enables standby infrastructure to take over in the event of the main services becoming unresponsive or crashing. Multiple instances can be used across different Availability Zones (AZ) to ensure continued operation even if an AZ experiences an outage. Use of health checks, auto scaling and load balancing to maintain high availability.</li>
<li>Fault tolerance = The ability to continue providing services in the event of a fault, issue or outage. Intent is that faults do not impact the user experience.</li>
</ul>
<h2 id="lab---design-a-web-application-architecture">Lab - Design a Web Application Architecture</h2>
<p><img src="/week2.png" alt="AWS web app architecture v3"></p>
<p>Summary of Cloud Architecture for Web Application</p>
<p>This document outlines the purpose of each component and the rationale behind key architectural decisions in our cloud architecture for the web application.</p>
<p><strong>Components:</strong></p>
<ul>
<li><strong>VPC (Virtual Private Cloud):</strong> Provides a secure and isolated environment for our application resources.</li>
<li><strong>Route 53:</strong> Routes incoming traffic to the application through a domain name.</li>
<li><strong>Public and Private Subnets:</strong> </li>
<li><strong>Public Subnets:</strong>
<ul>
<li><strong>Purpose:</strong> Host web servers that require internet access to serve content to users.</li>
<li><strong>Reasoning:</strong> Enables users to access the application through the internet.</li>
</ul>
</li>
<li><strong>Private Subnets:</strong>
<ul>
<li><strong>Purpose:</strong> Host application servers and databases that don&rsquo;t require direct internet access but need to communicate with web servers.</li>
<li><strong>Reasoning:</strong> Enhances security by restricting access to critical components from the public internet.</li>
</ul>
</li>
<li><strong>Web Servers and Application Servers:</strong> </li>
<li><strong>Web Servers (EC2 Instances):</strong>
<ul>
<li><strong>Purpose:</strong> Serve static content (HTML, CSS, JavaScript) and handle initial user requests.</li>
<li><strong>Reasoning:</strong> Offloads static content serving from application servers, improving performance and scalability.</li>
</ul>
</li>
<li><strong>Application Servers (EC2 Instances):</strong>
<ul>
<li><strong>Purpose:</strong> Process application logic, interact with the database, and generate dynamic content.</li>
<li><strong>Reasoning:</strong> Provides flexibility and scalability for handling application logic and database interactions.EC2 instances host the web application and application logic.</li>
</ul>
</li>
<li><strong>Load Balancers:</strong> 
<ul>
<li><strong>Purpose:</strong> Distribute incoming traffic evenly across multiple web and application servers.</li>
<li><strong>Reasoning:</strong> Ensures high availability and prevents overloading individual servers, improving application performance and scalability.</li>
</ul>
</li>
<li><strong>AWS WAF:</strong> Protects the web application from malicious attacks.
<ul>
<li>
<ul>
<li><strong>Purpose:</strong> Filters and blocks malicious traffic attempting to exploit vulnerabilities in the web application.</li>
</ul>
</li>
<li><strong>Reasoning:</strong> Strengthens application security by mitigating common web attacks like SQL injection and cross-site scripting</li>
</ul>
</li>
<li><strong>Amazon RDS (Relational Database Service):</strong> 
<ul>
<li><strong>Purpose:</strong> Provides a managed, scalable, and highly available database service for storing application data.</li>
<li><strong>Reasoning:</strong> Offers a reliable and secure solution for managing application data without the need for manual database administration.</li>
</ul>
</li>
<li><strong>AWS S3:</strong> 
<ul>
<li>
<ul>
<li><strong>Purpose:</strong> Stores static content like images, videos, and other application assets cost-effectively and efficiently.</li>
</ul>
</li>
<li><strong>Reasoning:</strong> Provides a scalable and cost-effective way to store and manage large amounts of static content, offloading storage from web servers and improving performance.</li>
</ul>
</li>
</ul>
<p><strong>Architectural Decisions:</strong></p>
<ul>
<li><strong>Horizontal Scaling:</strong> Web and application servers are deployed in auto scaling groups for horizontal scaling. This allows automatic scaling up or down based on traffic demands, ensuring optimal performance and resource utilization.</li>
<li><strong>Redundancy:</strong> Deploying critical components like web servers, application servers, and databases across multiple availability zones within the VPC ensures continued operation even if one zone experiences an outage.</li>
<li><strong>Security:</strong> Utilizing a VPC with public/private subnets and a WAF strengthens the application&rsquo;s security posture by isolating resources and filtering malicious traffic.</li>
</ul>
]]></content>
		</item>
		
		<item>
			<title>Cloud Engineer Academy Module 1 Blog - Cloud Fundamentals</title>
			<link>https://mmb198.github.io/en/posts/ca_week1/</link>
			<pubDate>Wed, 14 Feb 2024 21:25:43 +0800</pubDate>
			
			<guid>https://mmb198.github.io/en/posts/ca_week1/</guid>
			<description>I&amp;rsquo;ve embarked on a 12 week Cloud Engineering Academy, with the aim to increase my knowledge and skills in cloud computing. This is my first blog and I will be using this blog space to post summaries of my weekly study. The blog is currently hosted on Github and I am aiming to move the blog onto my cloud host as I progress through the course.
Week 1
To make my weekly summary, I start by making a list of topics/subjects that I study this week from my Obisidian note titles.</description>
			<content type="html"><![CDATA[<p>I&rsquo;ve embarked on a 12 week Cloud Engineering Academy, with the aim to increase my knowledge and skills in cloud computing. This is my first blog and I will be using this blog space to post summaries of my weekly study. The blog is currently hosted on Github and I am aiming to move the blog onto my cloud host as I progress through the course.</p>
<p>Week 1</p>
<p>To make my weekly summary, I start by making a list of topics/subjects that I study this week from my Obisidian note titles. Once I&rsquo;ve compiled this list, I then test my recall by attempting to write down all the information I retained about the subject. I then input my summaries into Bard for a quality control/accuracy check and review the items that bard highlights against my Obsidian notes. Below is my summary for week 1:</p>
<h2 id="cloud-service-types">Cloud Service Types</h2>
<p>IAAS - Infrastructure as a Service - Compute, storage etc (EC2, S3) - Base infrastructure that you can build whatever you want on.
PAAS - Platform as a Service - The underlying infrastructure is looked after by the service provider (hardware and OS), meaning you can focus on the service/app you are building/deploying (ex: Elastic Beanstalk, Lambda)
SAAS - Software as a Service - Elastic, Adobe Photoshop, AI images, M365, Teams etc</p>
<ol>
<li>Onprem - All physical infrastructure and services are provided &ldquo;on premises&rdquo;.</li>
<li>Cloud - All services are provided through the cloud. All hardware is through the providers Data Centre. Maintenance, security, power and cooling for the physical infrastructure is undertaken by the Service Provider.</li>
<li>Hybrid - Combination of both onprem and cloud infrastructure.</li>
</ol>
<h2 id="sdlc">SDLC</h2>
<p>Software Development Life Cycle DLC models: Waterfall and Agile</p>
<p>Sequential approach: Requirements (scope), Design, Development, Testing, Deployment, Maintenance.</p>
<h2 id="aws-account-creation">AWS account creation</h2>
<ol>
<li>Created admin account</li>
<li>Added MFA to root and admin accounts</li>
<li>Set billing alerts</li>
</ol>
<h2 id="virtualisation">Virtualisation</h2>
<p>Baremetal, type 1 hypervisors vs host based virtualisation
Virtualisation of hardware (cpu and memory for O/S and compute tasks),  storage (multiple disks seen as a single storage device)</p>
<p>The ability for a single server to act as multiple servers by allocating resources (cpu, memory etc) across virtual machines. Example 32 core CPU and 64GB of ram server can become 4 virtual machines/servers of 8 CPU cores and 16GB of ram. Resources do not need to be equal across VM&rsquo;s and should reflect the amount resources required for the application/task.</p>
<h2 id="cloud-networking">Cloud networking</h2>
<p>Introduction into networking engineering concepts of IP addressing, DHCP, DNS, NAT and protocols (TCP/IP, HTTP/HTTPS). Overview of networking hardware (routers and switches) and the ability to deploy virtual hardware in cloud deployments.</p>
<h2 id="operating-systems">Operating Systems</h2>
<p>Overview of three main O/S&rsquo;s (Windows, Linux, macOS). Touched on the different Linux distros (CentOS, Redhat, Ubuntu, SELinux etc), that many are open source and low cost.</p>
<h2 id="databases">Databases</h2>
<p>Databases were split into two main types, relational and nonrelational (nonSQL).
Relational is used to for large datasets with similar inputs, such as maintaining the name, address, DOB etc for staff and students at a school/university.
NonSQL is usually used when varied datasets will be ingested and flexibility is required. Can be column based, graph, key-value, document etc type database.</p>
<p>Captain CRUD: Create, Read, Update, Delete. Database strings/command types. Can be used on both Relational and NonSQL database types.</p>
<h2 id="labsprojects">Labs/projects</h2>
<ol>
<li>AWS account setup - touched on above</li>
<li>Completed basic networking engineering commands such as ping, find ip address (ipconfig/ifconfig, web ip check), traceroute/tracert, curl requests.</li>
<li>Windows and macOS setups - Discovered Chocolatey, as package manager for Windows, I love it. Ubuntu - sudo apt-get install &ldquo;program name&rdquo;, I found the Chocolatey similar to Debian/Ubuntu advanced packaging tool (APT), apt-get install &ldquo;program name&rdquo; vs choco install &ldquo;program name&rdquo;.
<ol>
<li>Install Choclatey in Powershell:</li>
<li>Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString(&lsquo;<a href="https://community.chocolatey.org/install.ps1'">https://community.chocolatey.org/install.ps1'</a>))</li>
<li>Basic Chocolatey commands:</li>
<li>choco install &ldquo;program name&rdquo;</li>
<li>choco list - displays a list of installed packages</li>
<li>choco search &ldquo;package name&rdquo; - searches for available packages</li>
<li>choco outdated - will provide a list of outdated packages on the machine</li>
<li>choco upgrade &ldquo;package name&rdquo; - upgrade the outdated packages identified in the previous command</li>
<li>choco uninstall &ldquo;package name&rdquo;</li>
</ol>
</li>
</ol>
<p><img src="/week1.png" alt="Week 1 - Obisidian Mind Map"></p>
]]></content>
		</item>
		
	</channel>
</rss>
