<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://husyn.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://husyn.dev/" rel="alternate" type="text/html" /><updated>2026-05-13T16:14:27+00:00</updated><id>https://husyn.dev/feed.xml</id><title type="html">husyn.dev</title><subtitle>Personal blog in which I&apos;ll write about my YouTube videos, philosophies I have about Software Engineering, Computer Science and Modern Application Development in general.  I love AWS Cloud and want others to understand the power of true Agile mindset.</subtitle><entry><title type="html">Migrating from AWS WorkMail to Hostinger Email</title><link href="https://husyn.dev/migrate-from-aws-workmail-hostinger/" rel="alternate" type="text/html" title="Migrating from AWS WorkMail to Hostinger Email" /><published>2026-05-05T00:00:00+00:00</published><updated>2026-05-05T00:00:00+00:00</updated><id>https://husyn.dev/migrate-from-aws-workmail-hostinger</id><content type="html" xml:base="https://husyn.dev/migrate-from-aws-workmail-hostinger/"><![CDATA[<blockquote>
  <p>“To make an apple pie from scratch, you must first invent the universe.” <a href="https://www.imdb.com/name/nm0755981/quotes/">Carl Sagan</a></p>
</blockquote>

<p>I love this quote whenever I think about or discuss developing software from <u>scratch</u>. I believe the reasoning behind using Cloud Computing services is similar. So that we don’t have to build, maintain or enhance these hardware / software services ourselves. Although this opens many doors, it also creates hard dependencies. In the real world, we almost always accept these dependencies and build our products on top of such tools / services. The problem with this dependency is that we don’t have control over when any of such dependency is <del>killed</del> deprecated.</p>

<p>We have famous Google Graveyard sites like (<a href="https://killedbygoogle.com">Killed by Google</a> and <a href="https://gcemetery.co">The Google Cemetery</a>). I tried to search something similar for AWS but couldn’t find any. To my dismay, I was using AWS WorkMail to provide (business) email services to my clients. About WorkMail, I like the flat (per inbox) pricing, default 50GB per inbox storage and easy configuration. Few things which I despise about it is the new UI webapp which was as clunky as the original version. No autodiscovery feature to be used by email clients like Outlook. AWS Region names in the IMAP and SMTP URLs. By default, no delete policy for trash or spam folder. No option of password reset by the user unless you’re on ActiveDirectory or using IAM Identity Center. You have to be quite technical to maintain it as service provider and regularly help your end-users with setup. They can’t easily do self-serve as with other email service providers. But at the end of it, it works consistently. Until it didn’t. <a href="https://docs.aws.amazon.com/workmail/latest/adminguide/workmail-end-of-support.html">AWS WorkMail End of support</a>.</p>

<p>Now I have to explore and figure out a provider which should support migration, should be same price (or cheaper), good enough storage, must be reasonably popular so that their services are not blacklisted and ample support available online. I found google workspace, ProtonMail and Hey are all expensive than AWS Workmail. I stopped checking Go-Daddy for anything from the days when they used to show sexist advertisement. Zoho Mail, Neo, IONOS and others were not suitable for factors like missing transparent pricing, data residency, privacy, or security features. Hosting email services myself would be cheaper but Total Cost of Ownership would be high. Bluehost was close but I settled with <a href="https://www.hostinger.com/business-email">Hostinger</a>.</p>

<p>Hostinger Mail has this useful feature that when you pay for a year it’s cheaper, when you pay for 2 years its more than 2 times cheaper, and so on. I ended up paying for 4 years in advance because that is the maximum they allow. Now hostinger uses IMAP to migrate email from almost any Email provider and have good controls like setting up Alias, Forwarder rules, etc. All the links like MX records, IMAP and SMTP link are straightforward. And after updating MX records it took 5 minutes before email started working again. Email client web application is really polished and far ahead with what was AWS WorkMail provides. I can add any number of mailboxes with few clicks and default storage is 10GB per inbox. You can purchase 30 GB for $4.99/mo and you can split it to multiple mailboxes which is sweet.</p>

<h4 id="migration-plan">Migration Plan</h4>

<ol>
  <li>I selected Buy email on Hostinger Portal (https://hpanel.hostinger.com/emails)</li>
  <li>Given my domain was not on Hostinger, I have to verify the domain by setting up DNS TXT record</li>
  <li>I selected Started Business Email plan which is only <strong>$18.72</strong> for 4 years per inbox! Renews at $1.59/mo</li>
  <li>Complete Payment</li>
  <li>Under “Manage mailboxes” created new mailboxes in hostinger first using same usernames as the Users in AWS Workmail</li>
  <li>Then I set the TXT and CNAME records for hostinger as part of setting Connect domain. I purposefully skipped updating MX records as I wanted to make sure email migration is success before I cut off old service</li>
  <li>I selected Email Import and created Import Requests for all of my mailboxes. This took few hours as AWS WorkMail didn’t delete any Trash/Junk emails by default and everything was migrated</li>
  <li>Once the migration was successful, I verified the emails via <a href="https://mail.hostinger.com/">Hostinger Mail Web Client</a></li>
  <li>Finally I updated my MX records to mx1.hostinger.com and mx2.hostinger.com and within 5 minutes, email started working</li>
  <li>I then disabled the users in AWS WorkMail and waited for all the users to confirm everything is working before cleaning up AWS</li>
  <li>Had to update all the configurations in Outlook and Mac OS Mail app. Had to re-authenticate Send As feature in Gmail and set the Forwarders in Hostinger as required</li>
</ol>

<p>The migration ended up being much smoother than expected, but the experience reminded me that every managed service introduces long-term dependency risks. Convenience today can become migration work tomorrow. This activity also became a motivation for me to believe that cloud provided service might not be the best one in all scenarios just because other parts are on cloud.
Here’s a referral link for <a href="https://www.hostinger.com/cart?product=hostinger_mail%3Apro&amp;period=12&amp;referral_type=cart_link&amp;REFERRALCODE=J6AMANSHUET1&amp;referral_id=019e1ca1-191f-7004-aab3-c40bc4b81577">Hostinger Business Email Plan</a> if you are also looking to migrate away from AWS WorkMail.</p>]]></content><author><name>husyn</name></author><category term="cloud" /><category term="migration" /><category term="email" /><category term="aws workmail" /><category term="migration" /><category term="hostinger email" /><category term="dns" /><category term="business email" /><summary type="html"><![CDATA[“To make an apple pie from scratch, you must first invent the universe.” Carl Sagan]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/email_migration.jpg" /><media:content medium="image" url="https://husyn.dev/assets/images/email_migration.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Earning Complexity on Cloud</title><link href="https://husyn.dev/earning-complexity/" rel="alternate" type="text/html" title="Earning Complexity on Cloud" /><published>2025-11-02T00:00:00+00:00</published><updated>2025-11-02T00:00:00+00:00</updated><id>https://husyn.dev/earning-complexity</id><content type="html" xml:base="https://husyn.dev/earning-complexity/"><![CDATA[<p>In cloud architecture, most failures don’t come from bad technology choices, they come from premature technology choices. Teams often jump to the most complex solution because it’s popular, modern, or “enterprise-grade,” without first considering simpler and more robust alternatives. On AWS, the (cloud) platform itself is designed to reward incremental complexity. Both in terms of capabilities and costing. The best architectures are those where decisions are taken in a clear hierarchy, moving from simple to complex only when there is a dire need.</p>

<p>A common example is resilience. Many organizations rush into multi-cloud strategies to avoid vendor lock-in or regional failures. Following <a href="https://en.wikipedia.org/wiki/KISS_principle">KISS principle</a> this is plain stupid! This is usually the most expensive and operationally complex option. Before even thinking about multi-cloud, AWS already offers strong primitives for resilience. Multi-region architectures can handle regional outages and regulatory constraints far more cleanly than splitting workloads across providers. And even before multi-region, multi-AZ deployments solve the majority of high-availability requirements with minimal added operational burden. I once interviewed at a place and the interviewer took pride in the fact that they use AWS, Azure, GCP and Alibaba Cloud. This is to reduce vendor lock-in. Poor engineers with this leadership mindset.</p>

<p>The same principle applies at the compute layer. Teams often default to server-based architectures because they feel familiar or controllable, but servers introduce ongoing patching, scaling, and availability concerns. Before provisioning EC2 fleets, it’s worth considering whether serverless services can solve the problem. AWS serverless offerings remove entire classes of operational work and failures. And for many workloads like APIs, event-driven processing, background or batch jobs; they provide better reliability by design than hand-managed servers.</p>

<p>Container orchestration is another area where complexity is frequently adopted too early. Kubernetes is powerful, but it comes with significant cognitive and operational overhead, even when managed. Kubernetes should be adopted if that’s the solution to your problem. Not because it’s popular! Before committing to Kubernetes within a single cloud, simpler options like ECS, or fully managed application services should be evaluated. In many cases, these alternatives deliver the required scalability and isolation without forcing teams to operate a distributed control plane. Running Lambda is any day better solution than Kubernetes on Fargate. Use the later only when it’s the only solution.</p>

<p>This hierarchy of decisions is not about avoiding complexity forever; it’s about earning it. Each step up the ladder should be justified by clear requirements that cannot be met at a lower level. Complexity should be a response to real constraints like scale, performance, latency, organizational structure. Not a default starting point. AWS makes this progression natural by offering mature solutions at every layer of abstraction.</p>

<p>In the end, good cloud architecture is less about choosing the most advanced tool and more about choosing the right one at the right time. Alas, too few organizations understand this even today. By consciously moving from multi-AZ to multi-region, from serverless to servers only when necessary, and from simple managed services to more complex platforms, teams build systems that are easier to operate, cheaper to run, and more resilient in practice. The smartest architectures are rarely the most complex. They’re the most deliberate in nature.</p>]]></content><author><name>husyn</name></author><category term="cloud" /><category term="architecture" /><category term="strategy" /><category term="maturity level" /><category term="kubernetes" /><category term="serverless" /><category term="aws" /><category term="technical-decision-making" /><summary type="html"><![CDATA[In cloud architecture, most failures don’t come from bad technology choices, they come from premature technology choices. Teams often jump to the most complex solution because it’s popular, modern, or “enterprise-grade,” without first considering simpler and more robust alternatives. On AWS, the (cloud) platform itself is designed to reward incremental complexity. Both in terms of capabilities and costing. The best architectures are those where decisions are taken in a clear hierarchy, moving from simple to complex only when there is a dire need.]]></summary></entry><entry><title type="html">Unlimited Emails Using Amazon SES</title><link href="https://husyn.dev/unlimited-emails-amazon-ses/" rel="alternate" type="text/html" title="Unlimited Emails Using Amazon SES" /><published>2025-06-10T00:00:00+00:00</published><updated>2025-06-10T00:00:00+00:00</updated><id>https://husyn.dev/unlimited-emails-amazon-ses</id><content type="html" xml:base="https://husyn.dev/unlimited-emails-amazon-ses/"><![CDATA[<p>In one of my previous posts, I’ve discussed the <strong>Cost</strong> aspect of adopting the cloud in <a href="https://husyn.dev/cloud-is-not-for-me/">Cloud is not for us</a>. Cost is always the first factor I evaluate before I host anything. And it’s the same with all my customers to whom I provide Cloud Management services. One service that often stands out as unexpectedly expensive in the cloud is <strong>Email</strong>.</p>

<p>Emails are always trickier and following the cloud principles, reinventing this wheel is just not sensical! I would rather pay little bit extra to ignore this complexity and focus on my needs rather than managing tools and email eco-system. This is similar to why we have RDS vs Databases on EC2, ECS and EKS, etc. In this post, I will share a solution which works for POCs, individual projects or small organizations and might not work if you have 100 or more users. Given I prefer AWS, using emails from other providers though is possible but not a great solution. So, I’ll stick to AWS eco-system and try to use best practices and not rely on temporary kludge.</p>

<p>The solution from AWS for email inbox is <a href="https://aws.amazon.com/workmail/">Amazon Workmail</a>, which uses Amazon SES in the background. For your custom domain, assuming it is managed on Route53, we create Organizations on Amazon Workmail. Once we have Organizations ready, we can create Users, Remote Users, Groups or Resources from the console.</p>

<ul>
  <li>User with a mailbox / inbox. Has Send and Receive capability</li>
  <li>Remote Users are without a mailbox and are free</li>
  <li>Group is an email without an inbox and forwards emails to members (users) of the group. Again, Free and without mailbox</li>
  <li>Resources are non-human entities like room or equipment. Used for resource reservation purpose</li>
</ul>

<p>We must create at least 1 user (with mailbox). This user will help us set up all the required configurations and glue Domain (Route53), Workmail, and SES together automatically by AWS. Once we have this working inbox, we’ll use the underlying SES to have <em>unlimited</em> email free inboxes 🥳. This solution enables us to create any number of free usernames and gives us ability to send emails from and receive emails to these usernames. But the catch is that there’s no inbox for each username. Emails received will be forwarded to one of the mailboxes and we’ll use gmail’s feature to send emails using our custom domain. This is obviously not feasible for large teams but is quite useful for small teams or individual projects.</p>

<p>So, let’s begin. After the working mailbox is created, go to <a href="https://us-east-1.console.aws.amazon.com/ses/home">Amazon SES</a> -&gt; (left menu) Configuration -&gt; Email receiving. You’ll see a rule set <ins>INBOUND_MAIL</ins> <code class="language-plaintext highlighter-rouge">Active</code>. This ruleset will have a rule with name like <code class="language-plaintext highlighter-rouge">m-xx...</code> and will show 2 things when clicked on. <strong>Conditions</strong> with the custom domain and <strong>Actions</strong> set to <em>Integrate with Amazon Workmail</em>.</p>

<p><img src="../assets/images/ses-rule-conditions-actions.png" alt="Rule Conditions" /></p>

<p>After this follow these steps:</p>

<ul>
  <li>Create a new Rule and name it <code class="language-plaintext highlighter-rouge">CatchAll-CUSTOM_DOMAIN</code></li>
  <li>Under Conditions use the same <code class="language-plaintext highlighter-rouge">CUSTOM_DOMAIN</code></li>
  <li>For Actions we’ll use <em>Deliver to Amazon S3 bucket</em> and <em>Invoke AWS Lambda function</em>.</li>
  <li>Make sure that this new rule is Below the original rule of Workmail (<code class="language-plaintext highlighter-rouge">m-xx...</code>)</li>
  <li>Create new S3 Bucket with a policy (sample below)</li>
  <li>Create IAM role for Lambda (sample below)</li>
  <li>Create Lambda function (sample below)</li>
</ul>

<p>Replace all caps values with real values</p>

<details>
<summary>S3 Bucket Policy</summary>

<pre><code class="language-json">
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESSaves",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::BUCKET_NAME_HERE/*",
            "Condition": {
                "StringEquals": {
                    "aws:Referer": "ACCOUNT_NUMBER"
                }
            }
        }
    ]
}
</code></pre>
</details>

<details> 
<summary> IAM Role for Lambda </summary>

<pre><code class="language-json">
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:us-east-1:ACCOUNT_NUMBER:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:ACCOUNT_NUMBER:log-group:/aws/lambda/LAMBDA_NAME_HERE:*"
            ]
        },
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Resource": [                
                "arn:aws:s3:::BUCKET_NAME_HERE/*"
            ],
            "Action": [
                "s3:GetObject"
            ]
        }
    ]
}
</code></pre>
</details>

<details> 
<summary> Python Code Lambda </summary>
We assume mailbox_email@CUSTOM_DOMAIN is the mailbox created in Amazon Workmail.

<pre><code class="language-python">
import boto3
import email
from botocore.exceptions import ClientError

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    ses = boto3.client('ses')
        
    # 1. Matches the bucket you created
    BUCKET_NAME = "BUCKET_NAME_HERE"     
    S3_PREFIX = "emails/" 
    
    # 2. Email Settings
    TARGET_EMAIL = "mailbox_email@CUSTOM_DOMAIN"
    SOURCE_EMAIL = "forwarder@CUSTOM_DOMAIN" #this username can be anything

    try:        
        ses_notification = event['Records'][0]['ses']
        message_id = ses_notification['mail']['messageId']    
        object_key = f"{S3_PREFIX}{message_id}"
        
        # 1. Fetch the raw email from S3
        response = s3.get_object(Bucket=BUCKET_NAME, Key=object_key)
        raw_email = response['Body'].read()
        
        # 2. Parse email to get Subject/Sender
        msg = email.message_from_bytes(raw_email)
        original_subject = msg['subject'] or "(No Subject)"
        original_sender = msg['from'] or "Unknown"

        # Do not forward emails already addressed
        recipients = ses_notification['mail']['destination']
        if "mailbox_email@CUSTOM_DOMAIN" in recipients:
            return {'disposition': 'stop_rule_set'}

        # 3. Create a Forwarding Email
        new_subject = f"[Catch-All] {original_subject}"
        body_text = f"Forwarded from: {original_sender}\n\n--- Original Content ---\n\n"
        
        if msg.is_multipart():
            for part in msg.walk():
                if part.get_content_type() == "text/plain":
                    payload = part.get_payload(decode=True)
                    if payload:
                        body_text += payload.decode(errors='replace')
                    break # Only grab the first text part
        else:
            payload = msg.get_payload(decode=True)
            if payload:
                body_text += payload.decode(errors='replace')

        # 4. Send via SES
        ses.send_email(
            Source=SOURCE_EMAIL,
            Destination={'ToAddresses': [TARGET_EMAIL]},
            Message={
                'Subject': {'Data': new_subject},
                'Body': {'Text': {'Data': body_text}}
            },
            Tags=[{'Name': 'SESForwarded', 'Value': 'true'}]
        )
        print(f"Success: Forwarded email {message_id} to {TARGET_EMAIL}")

        return {'disposition': 'stop_rule_set'}
        
    except Exception as e:
        print(f"CRITICAL ERROR: {str(e)}")
        raise e
</code></pre>
</details>

<p>In our scenario, if the <code class="language-plaintext highlighter-rouge">mailbox_email@CUSTOM_DOMAIN</code> receives an email, it is handled by the 1st rule and email goes to inbox. For me, after Workmail rule, SES was triggering my catch-all rule resulting in duplication. To handle this, in the python code I’m specially checking for <code class="language-plaintext highlighter-rouge">if "mailbox_email@CUSTOM_DOMAIN" in recipients: </code>. This is to ignore the processing if email is meant to be for Workmail mailbox.</p>

<p>This manages the receiving part. Email for any username is saved in S3 and processed by lambda and forwarded to any email we want. What about sending part? Well, to send we can rely on gmail’s functionality of <a href="https://support.google.com/mail/answer/22370?hl=en">Send emails from a different address or alias</a>. Gmail sends a verification email and since we can receive email for any username, we can easily verify any username to send emails. Gmail require SMTP Credentials which can be obtained from <strong>SES -&gt; SMTP Settings -&gt; Create SMTP credentials</strong>.</p>

<p>To make it look professional, create Remote Users for each email username. It will let you set First &amp; Last name, Display name and let other users search it if you select <strong>Show in global address list</strong> checkbox. In the code, I’ve just checked for 1 mailbox only. If you have multiple mailboxes, you can get the live data from AWS SDK accordingly. CLI Command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>aws workmail list-organizations

aws workmail list-users --organization-id m-1234567890 --query 'Users[?State==`ENABLED`].{Username:Name,Email:Email}'  
</code></pre></div></div>

<p>This approach isn’t scalable, but it works well in the early stages. Using a custom-domain email instantly makes a business look more legitimate and professional. And fall-back to Amazon Workmail from this solution is quite easy.</p>]]></content><author><name>husyn</name></author><category term="cloud" /><category term="aws" /><category term="email" /><category term="ses" /><category term="costing" /><summary type="html"><![CDATA[In one of my previous posts, I’ve discussed the Cost aspect of adopting the cloud in Cloud is not for us. Cost is always the first factor I evaluate before I host anything. And it’s the same with all my customers to whom I provide Cloud Management services. One service that often stands out as unexpectedly expensive in the cloud is Email.]]></summary></entry><entry><title type="html">What’s in it for me?</title><link href="https://husyn.dev/whats-in-it-for-me/" rel="alternate" type="text/html" title="What’s in it for me?" /><published>2022-11-08T00:00:00+00:00</published><updated>2022-11-08T00:00:00+00:00</updated><id>https://husyn.dev/whats-in-it-for-me</id><content type="html" xml:base="https://husyn.dev/whats-in-it-for-me/"><![CDATA[<p>Why people join meet-ups, tech communities &amp; guilds? Why invest their personal time and attend or speak in events for free? Even conduct tech workshops where they have to make sure attendees do the learning by doing and grow.</p>

<p>This is a big undertaking and not an easy one! In community events no-one gets paid it’s all by the people for the people. I’m involved in organising AWS User Group Dubai Meetups and doing it “consistently” for past many months. But why?!</p>

<p>For me, there are 2 simple reasons</p>

<p>1 - At every stage of my career, someone was there to show me how to do it right. I was a mobile application developer and from there transformed my career into cloud. Number of people helped me achieve this goal. It’s a debt, time to pass it on!</p>

<p>2 - When everyone is growing then the overall culture of growth and right mindset kicks in. Have to create a snowball effect where right discussions happen, skills are valued and people thrive.</p>

<p>To achieve this, I’m going to conduct a workshop on “<a href="https://www.meetup.com/aws-dubai/events/289456898/">Serverless Architecture for Beginners</a>” @ <a href="https://www.murdochuniversitydubai.com">Murdoch University Dubai</a> on 10th of November 2022. And I will continuously organise events where everyone at every level of their career can participate and have an impact.</p>]]></content><author><name>husyn</name></author><category term="meetup" /><category term="community" /><category term="networking" /><category term="learning" /><category term="speaking" /><summary type="html"><![CDATA[Why people join meet-ups, tech communities &amp; guilds? Why invest their personal time and attend or speak in events for free? Even conduct tech workshops where they have to make sure attendees do the learning by doing and grow.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/whatsinitforme.jpeg" /><media:content medium="image" url="https://husyn.dev/assets/images/whatsinitforme.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How to be an Architect?</title><link href="https://husyn.dev/how-to-be-an-architect/" rel="alternate" type="text/html" title="How to be an Architect?" /><published>2022-07-07T00:00:00+00:00</published><updated>2022-07-07T00:00:00+00:00</updated><id>https://husyn.dev/how-to-be-an-architect</id><content type="html" xml:base="https://husyn.dev/how-to-be-an-architect/"><![CDATA[<p>The one question which I asked a lot while being a developer half of my career. And is a common question I receive working as full time Solutions Architect. I rarely got 2 similar answers to the question. But it is somewhat agreed understanding that Architects in a technical team are very senior people who should know everything. This is not a complete truth and nor a lie. What architects are supposed to do (I believe) still varies from organisation to organisation.</p>

<h2 id="types-and-kinds-of-architects">Types and Kinds of Architects</h2>

<p>In my career I worked in 3 countries and many organisations. And the very definition of “Architect” is not same everywhere. Sometimes architects are extremely technical, they can code features and infra, create diagrams and present very complex solutions to non-technical stakeholders, manage budgets, have SLAs and KPIs, experiment and maintain the technical roadmap, understand security, cloud, business domain, integrations, architecture, development methodology, team dynamics and much more. These kind of architects are Angels to know and work with. A software engineer might grind under them but true growth is exceptional.</p>

<p>Another kind; enterprise and sometimes solution architects are quite theoretical. They know certain tech lingo and create high level diagrams and can discuss integrations. But their core competency is system understanding and business domain. They naturally grow from Business Analysts stream rather than Software Engineering. In large organisations, such architects are the glue for communication and standardisation. Both of which are always a challenge in enterprises. These architects seldom code and are “technical” of different type. Perspective is key here; someone from deep software development background might not comprehend their importance. But there’re a lot and good reasons why the role exists.</p>

<p>Technical or non-technical is a separate debate on it’s own. And which specific skills to have depends. In this article I’ll share the ideas which applies to all kinds of architects and some other overlapping roles.</p>

<h2 id="first-principles--decision-making">First Principles &amp; Decision Making</h2>
<p>The core skill for this role I believe is critical thinking and decision making. For any problem statement different roles in software engineering domain will have different solutions based on their perspectives. An Architect is the one which should understand all such perspectives and take decision based on <a href="https://en.wikipedia.org/wiki/First_principle">first principles</a>.</p>

<p>The decision making is a short expression but require a number of capabilities to do it right. It’s a balancing act between below mentioned (sometimes conflicting) ideas:</p>

<ul>
  <li>technology best practices and business value</li>
  <li>biases and preferences</li>
  <li>planning, designing and delivery</li>
  <li>short term vs long term architecture</li>
  <li>tech debts vs perfect code base and practices</li>
  <li>many more…</li>
</ul>

<p>To be good in decision making, one should have a number of non-technical soft skills. These soft skills help architects sell their story to the wider audience. In many scenarios, everyone agreeing to the story (architecture / solutioning) is much better than partial support towards the end goal.</p>

<h2 id="soft-skills">Soft Skills</h2>
<p>In <strong>SOFT</strong>ware Engineering I believe soft skills makes the most sense (for architects specially, sometimes more than technical knowledge). Humans create software for humans. So without soft skills, technical knowledge alone seldom works. The failure rate of software products is full of skills. <a href="https://www.forbes.com/sites/forbestechcouncil/2020/03/31/14-common-reasons-software-projects-fail-and-how-to-avoid-them/">Article by Forbes</a> discusses 14 points, none of them is about tech!</p>

<h3 id="business-vs-tech">Business vs tech</h3>
<p>Every engineer at some point in her career thinks that optimised, documented, test-covered, and formatted code is the best code. That’s how the source code should be. The truth is, only code which matters is the one that creates some business value. The more senior people you see in tech, the more business they understand &amp; support. Without business, tech in it self is worth nothing (or puny).</p>

<p>Every architect should understand this idea and practice it equally well. It doesn’t mean technology is not important or it’s impact is not valued. Balancing the both is the key!</p>

<h3 id="biases--preferences">Biases &amp; preferences</h3>
<p>Software world is always changing, so much so that no two products are built the same way. Given this, everyone has some kind of preferences and biases. These biases are due to our past experiences. We like to repeat what we have already done. It reduces the learning time and potential risks.</p>

<p>Bias is not only gender or the ones common in AI/ML space. There are LOT of Biases in software engineering. [1] and (https://github.com/charlax/engineering-management#biases) <a href="https://en.wikipedia.org/wiki/List_of_cognitive_biases">2</a> discusses these and you’ll be amazed how much of these are common around us. It’s just that we don’t know they exists until we know. An architect should know these and identify, point &amp; rectify them when required.</p>

<h3 id="writing">Writing</h3>
<p>If you’re the perfect shooter or can lift 1000kg but never told anyone then you’re just wasting the talent. It’s the same if you never contribute anything back. Anyone who has to stay relevant has to read! I don’t believe there’s any exception to this rule. Same like medical profession where doctors have to read medical journals to keep them updated with latest advancements. Software professionals have to read about new architectures, programming paradigms, development methodologies, etc.</p>

<h3 id="defining--naming">Defining &amp; Naming</h3>
<p>This is a hidden talent which I observed some of the great architects have. They name practices and architectures when they develop or *discover something. They productionise the tool which creates an entity in the universe which others can refer to and further build upon. Naming software have an impact on it’s stakeholders. If something has a name then it comes to life with health, behaviour, lifecycle, and other such attributes.</p>

<p>Some other aspects like versioning, maintaining lifecycle of APIs, nomenclature of artifacts, etc. are traits of this same competence.</p>

<p>*We discover best practices and patterns from iterative refinements</p>

<h2 id="architects-to-follow">Architects to Follow</h2>
<p>Given a list of skills an architect must have, there must be some role models to follow. Whatever I know today majority of the credit goes to these architects, leaders and great writers who shared their thoughts and experiences. Sharing the list for the readers:</p>

<ul>
  <li>
    <p><a href="https://martinfowler.com/">Martin Fowler</a>. He’s so great that few times I shared his idea and people were sceptical. When I mentioned that Mr. Fowler suggests this, everyone instantly agreed with it. His video on YouTube are amazing and his website is absolutely amazing for anyone to learn software architecture (and beyond)</p>
  </li>
  <li>
    <p><a href="https://www.developertoarchitect.com/">Mark Richards</a>. I attended two trainings from him and he knows the solutions of problems which we didn’t knew we’ll face in future given our tech stack and team dynamics. His <a href="https://www.youtube.com/channel/UC-Z7T0lAq_xECevIz8E5R5w">YouTube channel</a> is full of remarkable discussions.</p>
  </li>
  <li>
    <p><a href="https://architectelevator.com/">Gregor Hohpe</a> is someone I feel touch the philosophical aspects of Architecture and Engineering. His articles under <a href="https://aws.amazon.com/executive-insights/enterprise-strategists/gregor-hohpe">AWS blogs</a> are worth reading over and over again.</p>
  </li>
  <li>
    <p>Some other greats I love to read are <a href="https://samnewman.io/">Sam Newman</a> and <a href="https://nealford.com/">Neal Ford</a></p>
  </li>
</ul>

<h2 id="cloud-architect">Cloud Architect</h2>
<p>Cloud Architects are new beings and they demand special mention here. The special part about this role is the breadth of knowledge and skills required. We read that cloud democratise IT; it means cloud architects has to be well versed in</p>

<ul>
  <li>Infrastructure (networking, compute, storage, etc.)</li>
  <li>Application architecture (architecture patterns like microservices, event driven systems, queues, design patterns, etc.)</li>
  <li>Enterprise architecture (large scale integrations, costing, maintenance, tech debts, etc.)</li>
  <li>Security, automation, management, etc., etc.</li>
</ul>

<p>Any “good” cloud architect can’t be good in one area and be ignorant in other. They have to be a full package for the organisation. In terms of real-life example, AWS architects have a proper <a href="https://en.wikipedia.org/wiki/T-shaped_skills">T shaped skillset</a>. Yes there are specialised SAs, but even they understand basics of other domains like every specialised medical doctor have to go through MBBS.</p>

<p>So you might be an architect planning to explore cloud. Or in your early career thinking someday you’ll be an architect. Be open to this idea that Architects come in all shapes and sizes. And that depends on the opportunities they get in the career &amp; projects they work on. The variable which one can control is what they love to do, and there’s a high chance that some kind of Software Architect exists which does that! Keep designing, keep learning, everyone is an architect; depending on the scale.</p>]]></content><author><name>husyn</name></author><category term="architect" /><category term="career" /><category term="growth" /><summary type="html"><![CDATA[The one question which I asked a lot while being a developer half of my career. And is a common question I receive working as full time Solutions Architect. I rarely got 2 similar answers to the question. But it is somewhat agreed understanding that Architects in a technical team are very senior people who should know everything. This is not a complete truth and nor a lie. What architects are supposed to do (I believe) still varies from organisation to organisation.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/how-architect.png" /><media:content medium="image" url="https://husyn.dev/assets/images/how-architect.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cloud usage maturity levels</title><link href="https://husyn.dev/cloud-usage-maturity-levels/" rel="alternate" type="text/html" title="Cloud usage maturity levels" /><published>2022-05-24T00:00:00+00:00</published><updated>2022-05-24T00:00:00+00:00</updated><id>https://husyn.dev/cloud-usage-maturity-levels</id><content type="html" xml:base="https://husyn.dev/cloud-usage-maturity-levels/"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>From morning till night we interact with infinite things and all of them have a unit of measurement. Temperature, weight, our cars fuel tank, etc. All such units help us understand the level quantity and/or quality of something. We have to measure the level of expertise and complexity as well which is done well in higher education area. Whenever we read level <strong>101</strong> it is apparent that content is introductory in nature. And when something is level <strong>400s</strong> then it is expert level. This doesn’t look like a world changing idea but it has a great deal of importance. Form <a href="https://www.fredonia.edu/apcaas/guidelines-numbering-courses-undergraduate-level">Fredonia University</a> pages I found below definitions of course numberings. I’ll also share the relevant Cloud trainings or courses in alignment with these levels.</p>

<h3 id="level-100---introductory">Level 100 - Introductory</h3>

<p>Introductory courses where no pre-requisite is required. Definitions and basic knowledge is offered without application or analysis.</p>

<p>Training sessions are focused on providing an overview of Cloud services and features, with the assumption that attendees are new to the topic. Building blocks (Cloud Services) are introduced and their purpose is expected rather than their workings or usage.</p>

<h3 id="level-200---intermediate">Level 200 - Intermediate</h3>

<p>Often have level 100 as pre-requisites and now the knowledge acquired should be at a level where it can be applied.</p>

<p>It is assumed that basic understanding of services are there. Sessions are focused on implementation of services and how to combine them in a project.</p>

<h3 id="level-300---advanced">Level 300 - Advanced</h3>

<p>These courses teach the complex ideas in application and analysis of ideas. It is expected that anyone at this level can independently develop using what they have learned and improve it.</p>

<p>At this level specific area of interest is targeted like DevOps, AI, Microservices, Networking, etc. Now the topics are not generic in nature and industry best practices are discussed. Ideas like optimisations are continuous improvement live at this stage.</p>

<h3 id="level-400---expert">Level 400 - Expert</h3>

<p>These courses are not public in nature and are under wisdom umbrella rather than knowledge. Only knowing is not enough at this level and critical thinking is essential to compare and contrast ideas.</p>

<p>Trainings or discussions are for attendees who are deeply familiar with the topic, have implemented a solution on their own already, and are comfortable with how the technology works across multiple services, architectures, and implementations.</p>

<h2 id="aws-specifics">AWS Specifics</h2>

<p>AWS in their certifications and trainings (both classroom and on-line) categorise the content in two levels. It doesn’t maps with the generic course levels but does a good job at dividing the expertise level into multiple areas. The two main levels are Fundamental and Advanced.</p>

<h3 id="fundamental-level">Fundamental Level</h3>

<p>A developer who is new to AWS or at the fundamental level have experience in developing, testing, deploying and debugging AWS applications. A job at this level include:</p>

<h4 id="development">Development</h4>

<ul>
  <li>Write code suited for AWS environment</li>
  <li>Basic Cloud Native development</li>
</ul>

<h4 id="deployment">Deployment</h4>

<ul>
  <li>Build and manage deployment artifacts on AWS</li>
  <li>Use AWS continuous integration and continuous delivery (CI/CD) services for automation</li>
</ul>

<h4 id="security">Security</h4>

<ul>
  <li>Implement authentication and/or authorization for applications and AWS services</li>
  <li>Implement encryption using AWS services</li>
</ul>

<h4 id="maintenance-and-operations">Maintenance and Operations</h4>

<ul>
  <li>Implement observability using AWS Services</li>
  <li>Optimize applications using AWS services and features</li>
</ul>

<h3 id="advanced-level">Advanced Level</h3>

<p>At this level few years of AWS usage is recommended. All the knowledge in fundamental should be there and developers should have experience and expertise in designing and developing highly available, fault-tolerant, secure, and scalable applications on AWS. Designing a system from requirements is a must at this level. A job at this level include:</p>

<h4 id="planning-and-design">Planning and Design</h4>
<ul>
  <li>Required to understand designing a system given constraints like availability, cost, technology stack, etc.</li>
  <li>Determine design patterns to meet organizational or project requirements</li>
  <li>Select best suited AWS services to support design and non-functional requirements</li>
</ul>

<h4 id="development--deployment">Development &amp; Deployment</h4>
<ul>
  <li>Select best suited tech stack with industry best practices</li>
  <li>Understand re-usability and modular design</li>
  <li>Design and manage deployment artifacts lifecycle</li>
  <li>Implement high cohesive and low coupled applications</li>
</ul>

<h4 id="testing">Testing</h4>
<ul>
  <li>Develop automated unit, load, and integration tests</li>
  <li>Come up with scalability and multi-region requirements based on continuous testing</li>
  <li>Analyse results from automated tests and improve the system</li>
</ul>

<h4 id="security-1">Security</h4>

<ul>
  <li>Implement security for users and applications alike</li>
  <li>Implement security for data and integrations</li>
  <li>Define and implement run sheets for attacks and security breaches</li>
</ul>

<h4 id="observability-and-monitoring">Observability and Monitoring</h4>
<ul>
  <li>Instrument application code</li>
  <li>Implement processes like incident management</li>
  <li>Debug application code issues</li>
  <li>Troubleshoot application code, data and integration issues</li>
</ul>

<h2 id="organisational-use">Organisational Use</h2>

<p>Every organisation have to develop some kind of policies / rules around the competency of their employees. This competency decides career paths, promotions and compensations. How awesome it would be that every organisation clearly document this and make this public to (at least) all the employees, then a lot of debate and waste can be eliminated. Alas, our world is not perfect!</p>

<p>However I love that AWS has this sorted out in their certifications. Level 100 is the practitioner certificate. Level 200 can be mapped to associate level certificates. 300 or 400 level to Professional ones and Speciality ones. There’s still lot of wisdom which can’t be tested or exhibit by any certification. That could be level 500s which is specialised and reserved for PhD level studies. Large Enterprises have complexities which require skillset at this 500 level. That’s one of the reason that still a lot of businesses are not 100% cloud native or taking a slow route towards it.</p>

<h2 id="update">Update</h2>
<p>Similar to Cloud maturity model, Dario Goldfarb from AWS shared a <a href="https://maturitymodel.security.aws.dev/en/">Security Maturity Model</a>. It is nice to have these basic knoledge documented and available for everyone to guage where are they in terms of security.</p>]]></content><author><name>husyn</name></author><category term="cloud" /><category term="aws" /><category term="devops" /><category term="cloud adoption" /><category term="maturity level" /><summary type="html"><![CDATA[Introduction]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/cloud-usage-maturity-levels.png" /><media:content medium="image" url="https://husyn.dev/assets/images/cloud-usage-maturity-levels.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cloud is not for us</title><link href="https://husyn.dev/cloud-is-not-for-me/" rel="alternate" type="text/html" title="Cloud is not for us" /><published>2022-04-01T00:00:00+00:00</published><updated>2022-04-01T00:00:00+00:00</updated><id>https://husyn.dev/cloud-is-not-for-me</id><content type="html" xml:base="https://husyn.dev/cloud-is-not-for-me/"><![CDATA[<p>For some Cloud is an apparent truth. For others it is unknown territory which is yet to be matured or explored by them. We as humans are always afraid of unknowns and when the change impacts hundreds or thousands of people where majority of them are not exposed to the destination then it really is scary.</p>

<p>This <a href="https://www.computerworld.com/article/2488892/afraid-of-the-cloud--how-to-handle-your-fears.html">post by computerworld</a> from <strong>2014</strong> discusses about fear attached to cloud computing. Concerns like transparency, absolute dependency, hidden metrics about compute processes and costing. Here’s another one <a href="https://www.masterdc.com/blog/five-common-fears-of-the-cloud-what-is-cloud-computing/">post</a> from <strong>2015</strong> talking about five fears about Cloud. The post shares valid points like Data Security, Accessibility, Cost, Losing Control and Migrating back in case of failure.</p>

<p>But even in recent times the perception has not changed. It has improved but still many organisations fear this latest technology paradigm. A <a href="https://www.atlassian.com/blog/enterprise/cloud-fears-and-how-to-tackle-them">blog by Atlassian</a> written in <strong>2021</strong> discusses issues like security, visibility and decentralized access, subscription costs, right tooling and controlled workflows.</p>

<p>I have seen many other issues like</p>
<ul>
  <li>Scarcity of experts</li>
  <li>Dependency on 3rd party AWS partners, vendors or AWS support</li>
  <li>Democratization of decisions</li>
  <li>Time</li>
</ul>

<p>Out of the issues above, <em>time</em> is the most critical one. Quite a number of times, large organisations (through their employees) become comfortable in what they know. They don’t want to go extra mile and explore new areas of advancements. In such organisations, Cloud is always an after thought. Some IT leader in management thinks that world is moving to cloud and we also should. And that’s how many organisations start their cloud journey. Soon realizing that cloud is not mature enough, can’t manage their load, is too costly, etc., etc. The issue here is the mind set changes rather than technical.</p>

<p>Time is also critical in a way that the migrations and post-migrations improvements should be completed in months. Rarely that’s the case. Large organisations approach this like: Cloud Discovery, Cost/Feasibility/Other Analysis, Business Use-cases, Solutions Intents, Business buy-in presentations, budget approvals, security approvals, etc. All this luggage of past era is what cloud is NOT suitable for.</p>

<p>Cost is another very scary part of cloud computing. Especially in third world countries which are late majority or laggards <a href="https://ondigitalmarketing.com/learn/odm/foundations/5-customer-segments-technology-adoption/">Ref on terms</a>. The issue here is that of approach and learning from the industry. You don’t have to start every project on EC2 &amp; after maintaining it for x years realize that it should be serverless. The team has to be made up of passionate people who like to explore, join meetups, read blogs, etc. They’ll be the ones who will be coming up with ideas eventually bringing the cost down.</p>

<p>The final fear according to me is <em>how to manage the cloud</em>. This is a genuine issue and should be really given deep thoughts. To start with cloud is really simple but to master it is the real challenge. It’s the same as playing <a href="https://flappybird.io/">Flappy Bird</a> game. It is super easy to start &amp; even a 1 year old can play it. You just have to tap the screen to play. But to master it, yeah that’s a totally different level of complexity.</p>

<p>Cloud is somewhat similar. Everyone can create an account and you’ll find thousands of blogs and videos on how to do something on EC2 instance. Well Cloud is much more than EC2s, with AWS having more than 200 services (at the time of writing this post). A better approach is how to use the building blocks and make them work together to solve a product problem. This is much harder then it seems. Managers prefers AWS Marketplace solutions or AWS Partners to manage the cloud for them.</p>

<p>I’ve also seen Cloud Ops team which kills the whole cloud idea. You have to raise a ticket which has SLA of 7 days. Then an EC2 is created and passed to OS team to harden it. Then Security team examines it, then network team sets the paths and budget approval and 4 levels or approvals and then the question is why are you even moving to cloud?? Stay in the good old data-center with 3 months lead time on a VM.</p>

<p>There could other <em>considerations</em> in your organisations as per the local context. But all of us at this point should consider that cloud is not something in future, in fact it is a living truth. So maybe update our perspective and look at the positive reasoning of why so many world level organisations have moved to cloud. There must be a good reason that they followed that path. Still if cloud is not the solution, then maybe you’re the few niche organisations for which Cloud has to update itself.</p>]]></content><author><name>husyn</name></author><category term="cloud" /><category term="aws" /><category term="migration" /><category term="devops" /><category term="cloud adoption" /><summary type="html"><![CDATA[For some Cloud is an apparent truth. For others it is unknown territory which is yet to be matured or explored by them. We as humans are always afraid of unknowns and when the change impacts hundreds or thousands of people where majority of them are not exposed to the destination then it really is scary.]]></summary></entry><entry><title type="html">DevOps / Systems Engineering Tools</title><link href="https://husyn.dev/system-engineering-tools/" rel="alternate" type="text/html" title="DevOps / Systems Engineering Tools" /><published>2022-03-16T00:00:00+00:00</published><updated>2022-03-16T00:00:00+00:00</updated><id>https://husyn.dev/system-engineering-tools</id><content type="html" xml:base="https://husyn.dev/system-engineering-tools/"><![CDATA[<p>Originally posted at <a href="https://ihusyn.wordpress.com/2018/09/09/devops-tools/">iHusyn</a></p>

<p>These are some of the tools which I have used or considered for my projects as DevOps practitioner / SRE implementer</p>

<h2 id="ci-tools">CI Tools</h2>

<ul>
  <li><a href="https://www.jetbrains.com/teamcity/">TeamCity</a> Open source, free 3 agent &amp; 100 Build Configs</li>
  <li><a href="https://buildkite.com/">BuildKite</a> Simpler then old 
school CI Servers. UI as SaaS. Agents are loosly coupled</li>
  <li><a href="https://travis-ci.org/">TravisCI</a> / <a href="https://circleci.com/">CircleCI</a></li>
  <li><a href="https://www.atlassian.com/software/bamboo">Bamboo</a> Atlassian product. Gels well with Bitbucket and JIRA</li>
  <li><a href="https://jenkins.io/">Jenkins</a> Would not use this if absolute necessary!</li>
</ul>

<h2 id="cd-tools">CD Tools</h2>
<ul>
  <li><a href="https://aws.amazon.com/codedeploy/">CodeDeploy</a> Deployment on AWS Cloud</li>
  <li><a href="https://www.spinnaker.io/">Spinnaker</a> Continuous Delivery for Enterprise (same as CodeDeploy). Fits in K8s eco system</li>
</ul>

<h2 id="code-quality">(Code) Quality</h2>
<ul>
  <li><a href="https://www.sonarqube.org">SonarQube</a> Source Code scanning (Continuous Inspection)</li>
  <li><a href="https://www.veracode.com">VeraCode</a> Focused on security</li>
  <li><a href="https://snyk.io">SNYK</a></li>
</ul>

<h2 id="monitoring">Monitoring</h2>
<ul>
  <li><a href="https://aplas.com/public">Aplas</a> Maps software applications on Map like canvas</li>
  <li><a href="http://hostedgraphite.com/">Graphite</a> Dashboard (visualisation) tool</li>
  <li>Dynatrace</li>
  <li>AppDynamics</li>
</ul>

<h2 id="infrastructure-as-code">Infrastructure as Code</h2>
<ul>
  <li><a href="https://www.terraform.io/">Terraform</a> create and maintain infrastructure as a code. (multi-cloud, external CDN &amp; DNS)</li>
  <li><a href="https://aws.amazon.com/cdk/">AWS CDK</a> Programming language based CloudFormation abstraction</li>
</ul>

<h2 id="practices">Practices</h2>
<p>DevOps is a set of practices and/or mindset which demands more than tools and their automated usage. Some of the practices which I follow or plan to follow is below:</p>

<ul>
  <li><a href="https://semver.org/">Versioning</a> how to version software releases</li>
  <li><a href="https://github.com/thoughtworks/build-your-own-radar">TechRadar</a> A library that generates an interactive radar, inspired by http://thoughtworks.com/radar/ It’s more of a communication tool in an organisation.</li>
  <li>CNCF (Cloud Native Computing Foundation)’s <a href="https://github.com/cncf/trailmap">trail map</a> for companies starting on Cloud</li>
</ul>

<h2 id="bigdata">BigData</h2>
<ul>
  <li><a href="https://prestodb.io/">Presto</a> Distributed SQL Query Engine for Big Data</li>
  <li><a href="https://avro.apache.org/">Apache Avro</a> Apache Avro™ is a data serialization system</li>
</ul>

<h2 id="data-format">Data format</h2>

<ul>
  <li><a href="https://parquet.apache.org/">Apache Parquet</a></li>
  <li>YML</li>
  <li>KDL</li>
</ul>

<h2 id="microservices">Microservices</h2>
<ul>
  <li><a href="http://docker.io/">Docker</a></li>
  <li><a href="https://kubernetes.io/">Kubernetes</a></li>
  <li><a href="https://istio.io">Istio</a></li>
  <li><a href="https://github.com/Netflix/eureka">Eureka</a>Netflix’s Service registry/discovery</li>
  <li><a href="https://linkerd.io/">Linkerd</a> Ultralight service mesh for Kubernetes and beyond</li>
</ul>

<h2 id="feature-toggle">Feature Toggle</h2>
<ul>
  <li><a href="https://unleash.github.io/">Unleash</a></li>
  <li><a href="https://launchdarkly.com">Launch Darkly</a></li>
</ul>

<h2 id="secrets-management">Secrets Management</h2>
<ul>
  <li><a href="https://github.com/mozilla/sops">SOPS</a> Created by Mozilla, uses AWS KMS for the master key to encrypt files based on yml configurations</li>
  <li><a href="https://www.vaultproject.io/">Hashicorp Vault</a></li>
  <li><a href="https://github.com/realestate-com-au/shush">Shush</a> AWS KMS based encryption and command shim</li>
</ul>

<h2 id="performance-measure">Performance Measure</h2>
<ul>
  <li><a href="https://gtmetrix.com/">GTmetrix</a></li>
  <li><a href="https://www.pingdom.com/">Pingdom</a></li>
  <li><a href="https://www.webpagetest.org/">WebPageTest</a></li>
</ul>

<h2 id="documentation">Documentation</h2>
<ul>
  <li><a href="https://github.com/mermaid-js/mermaid">Mermaid</a> Generation of diagram and flowchart from text in a similar manner as markdown</li>
  <li><a href="https://github.com/mingrammer/diagrams">Diagram As Code</a> Python based tool to create cloud diagrams</li>
</ul>

<h2 id="specialised-tools">Specialised Tools</h2>
<ul>
  <li><a href="https://www.proxysql.com/">ProxySQL</a> layer 7 SQL-aware load balancer for MySQL</li>
  <li><a href="https://www.gremlin.com/reliability-calculator/">Reliability Calculator</a> a simple calculator which shows the rating of Reliability of a System</li>
  <li><a href="https://www.devops-research.com/quickcheck.html">DevOps Calculator</a> Google Cloud based calculator which is based on DORA</li>
</ul>]]></content><author><name>husyn</name></author><category term="devops" /><category term="cloud" /><category term="tools" /><category term="systems-engineering" /><summary type="html"><![CDATA[Originally posted at iHusyn]]></summary></entry><entry><title type="html">How to learn AWS Cloud?</title><link href="https://husyn.dev/how-to-learn-aws-cloud/" rel="alternate" type="text/html" title="How to learn AWS Cloud?" /><published>2021-01-06T00:00:00+00:00</published><updated>2021-01-06T00:00:00+00:00</updated><id>https://husyn.dev/how-to-learn-aws-cloud</id><content type="html" xml:base="https://husyn.dev/how-to-learn-aws-cloud/"><![CDATA[<p>If I have to tell you the name or details of companies like Netflix, Twitch, LinkedIn, BBC, Sony, Adobe or Twitter and many more then this post is not for you. The cloud computing is a myth and we’re better of with Abacus. If not, then all of these companies and thousands others use Cloud for their computing needs.</p>

<p>It is not esoteric that Cloud is the power house behind agile teams and great products. It is the only logical way of creating a digital business in this age according to me. So if cloud is so much important then everyone should learn it. And if many people wants to learn it then it should be pretty straight forward. But on the contrary it is very confusing for beginners to pick up cloud (services). There are <a href="https://aws.amazon.com/what-is-aws/">175</a> Services in Amazon Web Services (AWS) alone as of January 2021.</p>

<p>So the intricate problem is that “cloud is important and everyone should learn it but it is huge and knowledge is scattered.” To have a solution to this problem I came up with a list of my own about how to learn Cloud or specifically AWS Cloud.</p>

<h2 id="documentation">Documentation</h2>

<p>The most obvious place to learn any technical product or service is the official documentation. Documentation is amazing if it is written for specific specific use-cases or the topic in hand is not like ocean. <a href="https://aws.amazon.com/">AWS Documentation</a> is huge on the other hand. It is so huge that each service has few thousand pages of its own. And since there are over 175 services, you can figure out how much documentation there should be. AWS Documentation covers everything from pricing, FAQs, APIs, Architecture, Best Practices, Integrations, Limits, Updates, Security concerns, implementation examples, templates, etc. It is great if you want to know about a specific section of a service but if you’re a beginner then reading documentation is not going to help you. Read on for better alternatives.</p>

<h2 id="presentations-workshops-and-trainings">Presentations, Workshops and Trainings</h2>

<p>AWS invests a lot on promoting itself. There are thousands of workshops and trainings by AWS employees throughout the year in almost every part of the world. Other than AWS itself, there are <a href="https://aws.amazon.com/developer/community/usergroups/">User Groups</a> which are managed by non-profit local communities. This is a great place to understand the basics and start with the cloud space. You can check the online <a href="https://workshops.aws/">AWS workshops</a> and <a href="https://www.aws.training/">AWS Trainings</a> if you’re a beginner or if you want to learn about a specific services. It is also a great way to learn about AWS Certification.</p>

<h2 id="courses">Courses</h2>

<p>Other than workshops or presentations, you can buy courses on the topic of AWS and related technologies. My personal favorite is <a href="https://acloudguru.com/">A Cloud Guru</a> which is a subscription based platform to learn lot of cool technical technologies. If you don’t want to pay for a subscription then search for one-off course on <a href="https://udemy.com">Udemy</a> and you’ll find great stuff there. It is also a good way for beginners to start their cloud journey.</p>

<h2 id="podcasts-meetups-twitch-youtube-and-blogs">Podcasts, Meetups, Twitch, YouTube and Blogs</h2>

<p>Now some tips / suggestions if you’re not absolute beginner. All the above techniques will help you learn the technology but will not help you in managing it or operationalize it. If you want to manage teams, products or have to use cloud in an enterprise level then below suggestions are for you.</p>

<p>To know what are the latest trends in cloud you can listen to Podcasts. Two amazing free podcasts are <a href="https://soundcloud.com/user-400554634-327246271">AWS Public Sector Podcast</a> and <a href="https://soundcloud.com/user-684142981">Tech Chat</a>. Both of these podcasts cover different topics and industry trends.</p>

<p>Other than Podcasts, <a href="https://www.youtube.com/user/AmazonWebServices">AWS YouTube Channel</a> is also amazing. You’ll learn how others architect their systems, solutions of problems by users, interviews and much more. For more technical knowledge checkout <a href="https://www.twitch.tv/aws/videos">AWS Twitch</a> and for content in multiple languages <a href="https://www.twitch.tv/devaxconnect/videos">DevAxConnect</a> twitch channel.</p>

<p>If you anything else where we can learn AWS then please comment on the YouTube video.</p>

<h2 id="understanding-cloud-knowledge">Understanding Cloud Knowledge</h2>

<p>Do checkout my YouTube video linked below in which I share how much cloud you should know and how much you have to work for it. I’ve tried to follow the HOTS (Higher Order Thinking Skills) to explain how to tame the Cloud Dragon.</p>

<h3 id="youtube-video">YouTube Video</h3>

<p>I also happen to make a video on the topic in case if anyone wants to hear all of my love for AWS! If you’ve made it so far then here’s the <a href="https://husyn.dev/assets/pdf/AllAboutCloud-Learning.pdf">slides</a> I used in the video for you.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/pHrGrwbQKU8" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>]]></content><author><name>husyn</name></author><category term="youtube" /><category term="cloud" /><category term="aws" /><summary type="html"><![CDATA[If I have to tell you the name or details of companies like Netflix, Twitch, LinkedIn, BBC, Sony, Adobe or Twitter and many more then this post is not for you. The cloud computing is a myth and we’re better of with Abacus. If not, then all of these companies and thousands others use Cloud for their computing needs.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/allaboutcloud-learning.jpg" /><media:content medium="image" url="https://husyn.dev/assets/images/allaboutcloud-learning.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Is Cloud Expensive?</title><link href="https://husyn.dev/facts-why-aws-is-cheap/" rel="alternate" type="text/html" title="Is Cloud Expensive?" /><published>2021-01-01T00:00:00+00:00</published><updated>2021-01-01T00:00:00+00:00</updated><id>https://husyn.dev/facts-why-aws-is-cheap</id><content type="html" xml:base="https://husyn.dev/facts-why-aws-is-cheap/"><![CDATA[<p>The Cloud (Computing) is one of the latest trends in Software industry. Well yes it’s not so latest as AWS was launched in mid 2000s and since then has become a monster of its own. There was a famous iPhone commercial <a href="https://www.youtube.com/watch?v=szrsfeyLzyg">There’s an app for that</a>. And now we can say that for any use-case there’s a “<a href="https://aws.amazon.com/products/">Service for that!</a>” AWS is the Cloud services provider which has the majority market cap in this space. Still it is small compared with the whole software industry.</p>

<p>There are millions of applications of every kind which are not using any Cloud services. Specially in developing and under developed countries the hesitation to adopt cloud is because of it’s cost. These markets being so cost sensitive don’t consider the total cost of ownership concept, heavily marketed by cloud vendors of all types. I’ve tried to remove this misconception and came up with 10 reasons of my own on why cloud is cheap.</p>

<h2 id="utility-pricing">Utility Pricing</h2>

<p>Same like we have billing for our house utilities, cloud services are charged on usage. If you don’t use any services then don’t have to pay anything.</p>

<h2 id="free-tier">Free Tier</h2>

<p>When we sign-up for a new AWS account, it comes with lot of free stuff. Some of these free tier services are for 12 months and some others are forever free (again based on usage). Get the details of all such services <a href="https://aws.amazon.com/free/">here</a>.</p>

<h2 id="student-program--aws-education">Student Program / AWS Education</h2>

<p>If you’re student then access AWS (limited) services for free via <a href="https://aws.amazon.com/education/">AWS Educate</a> program. One must have active “.edu” email address. I received $100+ in credits when I was a student and learned a lot with those.</p>

<h2 id="startup-program--aws-activate">Startup Program / AWS Activate</h2>

<p>AWS specially love startups, not only they might be next Netflix app but it’s all free promotion and adoption of AWS. A startup can get up to $100,000 in AWS credits. More details <a href="https://aws.amazon.com/activate/">here</a>.</p>

<h2 id="reserve-instances">Reserve Instances</h2>

<p>If the application is compute intensive or just require stable EC2 instances then <a href="https://aws.amazon.com/ec2/pricing/reserved-instances/">Reserving instances</a> for 1 or 3 years is a good idea to save some bucks. It is up to 72% cheaper then on-demand (utility) price.</p>

<h2 id="savings-plan">Savings Plan</h2>

<p><a href="https://aws.amazon.com/savingsplans/">Savings plan</a> is similar to Reserved Instances where the purchase is not based on server per year but $ per hour.</p>

<h2 id="spot-instances">Spot Instances</h2>

<p>The magic behind the AWS on-demand capacity is <em>Redundancy</em>! But it also means that resource utilization is not optimal most of the time. This extra capacity is available to the consumers via <a href="https://aws.amazon.com/ec2/spot/">SPOT Instances</a>.</p>

<h2 id="aws-lightsail">AWS Lightsail</h2>

<p>Not every application is using Microservices Architecture. In fact majority of the web is working on PHP language and 35% is just <a href="https://hostingtribunal.com/blog/wordpress-statistics/">WordPress</a>. To setup such server should not take few clicks and few minutes. That’s what LightSail does! It has lot of templates to create servers with a fixed pricing model. LightSail is perfect entry point to the cloud for lot of users.</p>

<h2 id="economy-of-scale">Economy of Scale</h2>

<p>This point applies for someone who is thinking long-term. As your cloud usage grows, the cost doesn’t spikes up linearly. It goes down actually. The higher the AWS bill, the more discount you’ll get.</p>

<h2 id="commitment-free">Commitment Free</h2>

<p>This is my favorite point and consideration with the cloud. There are just no commitments at all and anyone can mix and match any services with any provider. One can stop any service and not have to worry about the bills from that point onwards.</p>

<h3 id="youtube-video">YouTube Video</h3>

<p>I also happen to make a video on the topic in case if anyone wants to hear all of my love for AWS! If you’ve made it so far then here’s the <a href="https://husyn.dev/assets/pdf/AllAboutCloud-Cost.pdf">slides</a> I used in the video for you.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/xUC8jkVuhwA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>]]></content><author><name>husyn</name></author><category term="youtube" /><category term="cloud" /><category term="aws" /><summary type="html"><![CDATA[The Cloud (Computing) is one of the latest trends in Software industry. Well yes it’s not so latest as AWS was launched in mid 2000s and since then has become a monster of its own. There was a famous iPhone commercial There’s an app for that. And now we can say that for any use-case there’s a “Service for that!” AWS is the Cloud services provider which has the majority market cap in this space. Still it is small compared with the whole software industry.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://husyn.dev/assets/images/is-cloud-expensive.png" /><media:content medium="image" url="https://husyn.dev/assets/images/is-cloud-expensive.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>