Home

March 23, 202010 min read

Developer’s draft on AWS jargons

Being a developer, it’s almost impossible to ignore a few technical jargon namely cloud computing solutions(say AWS, Azure, Google cloud platform, etc) and version control systems(say, Git). These are some major players in all aspects of development irrespective of the position or phases. Thus it adds more power to our travel if we managed to understand them at least to the ground level and break myths relating to them.

AWS — cloud

With more power to computing, efficient usage of computing resources, fast-paced methodologies in arriving at appropriate solutions world got simplified and became much more connected. Nothing at present is too far or too complex to approach and solve.AWS is a major conquerer of this cloud space and they promote the utmost flexibility in providing computing solutions to this world.

Disclaimer: I am not working with amazon or anyway trying to promote them with my content. All the opinions and suggestions below are personal and not subject to any sort of promotion.

Let’s initially try to grasp a few basic concepts ground up from common questions below.

What is cloud computing and why it’s everywhere a sensation now?

Let’s get back to the earlier stages of computing. Remember those days, when we used to manage high-end computing resources like costly servers under maintenance in a safe monitored server room with *24\7 **round the clock administrators. Those were a daydream for many early-stage startups those days. Why is it so? How a bootstrapped startup just grounded up will be capable of enabling such costly server setup powering them? What if they were scaling up rapidly in weeks and there arises more need for such resources later?

Let’s add more power to this with an example. Jhon, seasoned entrepreneur kick-started his first startup on customized online cake delivery store. He started selling customized cakes in and around Paris initially. To his surprise, the business hiked in a week to more deliveries that he is in need of more computing resources to cope up with those online orders. He noticed that his server is responding too slow for requests from customers. On a weekend the traffic hiked to peek and as a result, his website got down for 3 hrs. It took 2 days for Jhon to scale his server setup and lift his business back. Guess what, unfortunately, he lost a few of his potential customers because of the bad user experience for the last two days. They were compromised by his competitors. His user base decreased and now he is into another problem. Problem with resources. He now hardly find his server’s busy. He felt most of the time the extra server remained idle and exactly he is in no need of them anymore. He paid for too them despite being useless now. What could be the solution? Can Jhon sell the extra server setup? If he does it, what if he again requires them for his business when the festive season is arriving. If he managed to keep on paying for those resources will he sustain the overall revenue?

John is not the only one facing this problem, millions of business are in need of an effective tactic to solve these issues. There came the advent of cloud computing solutions.

Here you only pay for what you use and use only when you are in need

What does that mean? John now shifted his business to the cloud. He has his website running on AWS powered suites.

In what way moving to the cloud helped Jhon lift his business?

Since Jhon adapted using AWS powered solutions now he is paying only for the resources he uses up. For eg: He stores all his user data and order-related data on RDS (Relational Database Solution) provided by AWS.Thus he pays only for what it uses up. Moreover, he managed to increase his website traffic by providing an awesome user experience with CloudFront and S3. With all his assets delivered from S3 and rendered via CloudFront CDN, it hardly took time to load up. Under the ground, all these services are powered by AWS EC2 instance of his choice which is exclusively maintained and provided by amazon for free. Assured of limited downtime and zero maintenance cost as well.No headache of arranging space for huge severs and hiring administrators anymore.

You know what, initially while starting up Jhon managed to run his beta business run with 1 year AWS free-tier itself, which means with zero upfront cost to kick-start.

What else one demands to kick-start your idea?

Why it’s important to grasp AWS concepts being a developer?

With the benefits mentioned earlier, you will hardly find some business adapting the traditional server-setup anymore. Already millions have moved their businesses into the cloud and thus it’s inevitable you should also start using it.

Cloud service providers have simplified their services a lot and continuously pushing them focusing on usability. Thus it’s more obvious that a developer can independently handle them for their projects now. It’s not that each and every deployment activities are taken care of the DevOps professional on his own. With the basic knowledge of these, you could power more flexibility and security to your applications. Let me remind you something an AWS system administrator has unique responsibilities aligned with their profiles and it’s inappropriate to expect them to help you with all stuff relating to cloud. From now on, go get your hands dirty with basic concepts, at least a bit with the console initially. I bet you that things won’t be that smooth if you are not practiced to these kinds of cloud setups as a developer that too in early staged startups.

What extend should I learn about these services being a developer?

To be honest, there is no boundary for learning these services and usage in industries. You can try your hands dirty with almost all if you are really interested and comfortable learning those. But there are few kinds of stuff which you would encounter most often during your development phases and thus it’s important to ensure having good command over them. Let me list a few commonly used up solutions in AWS,

  • S3 — scalable storage in the cloud (hopefully it would be the place where all your static assets reside)
  • EC2 — virtual servers in the cloud (all your load runs here)
  • RDS — managed relational database service (say, you would store your user data here)
  • Route53 — scalable DNS and domain name registration

And few other extended services like,

  • VPC — helps in maintaining isolated cloud resources (will be acting as a container for your resources)
  • CloudFront — global content delivery network(probably enhancing the overall loading experience)
  • DynamoDB —managed no-SQL database
  • Cloudwatch — helps you monitor resources and applications (can be your lifesaver at times)

AWS servicesAWS services

Now let’s drill down to these basic services concepts as short crisp snippets,

What is EC2? What can you do with it?

EC2 is nothing but computing tools on the cloud. You can do almost anything that you can do with the help of a computer. It’s basically a virtual machine.

With EC2 you can easily launch EC2 instances (say Linux servers, third-party AMIs which are available in the marketplace).

What is an AMI then?

An Amazon Machine Image (AMI) provides the information required to launch an instance. You must specify an AMI when you launch an instance. An image is basically a combination of operating system and related software (like java, python, etc)

Image = OS + softwares

What is cloudwatch and why should I care about it?

Cloudwatch is a monitoring service for other AWS services. The beauty is that you probably would have been already using them without realizing it’s cloudwatch since most often they exist as integrated form with other AWS services.

Alarms + metrices — alerted via email,messages etc

It’s extremely handy and useful in many cases. For eg: Since I started experimenting with AWS in a free-tier, I have set up alarm for billing such that it alerts me via mail when the CPU utilization exceeds a certain limit. The condition I have set up was,

CPUUtilization < 10000 for 1 datapoints within 5 minutes

This ensured me a more reliable and informed service utility.

What typical services would I require for a minimal scalable web app?

EC2 — for app hosting Images and assets stored and served via — S3 All your user’s data stored in — dynamo DB or RDS Objects (say cart items in e-commerce solutions) — RDS Sessions — managed via elastic cache

This could make sense for a scalable web app for a decent user base.

What is IAM? Why we are so much bothered about it?

Identity and Access Management (IAM) enables you to manage access to AWS services and resources securely. Using IAM, you can create and manage AWS users and groups, and use permissions to allow and deny their access to AWS resources. Let me make it clear how I have been managed with access to my company AWS account.

The company I have been interned with has a joined AWS account which will be extensively used by each member across functions and products. Being an intern, I was working with the company’s marketing website and thus I have been provided access only for it by one of the admin. I requested access to it from one of our admin. Say, if I have been assigned some other work dealing with a different product in the future I should request access to it the same way. It’s important to note that only those who were given access to particular services would be allowed to work with them. This ensures restricted access to services. I was also advised to set up MFA(multi-factor authentication) for the AWS environment as an extra layer of security. It requires me to enter an MFA code before sign-in synced up with some device or virtual machine. These things can be effectively handled with the IAM console.

Few things that you can do with IAM are,

How assets are stored and managed in S3?

S3 — simple storageS3 — simple storage

Simple Storage (S3) is one of the oldest AWS services like EC2. It stores as objects whatever it may be. An object is something,

object = file + metadata

Objects are stored in AWS buckets. Each bucket will have a unique bucket name. Thus you can’t have same name for two buckets.

What are some database options available under RDS?

  • MYSQL
  • PostgreSQL
  • SQL Server
  • MariaDB
  • Oracle DB
  • Amazon Aurora

PostgreSQL is my personal favourite :)

In what way RDS is efficient?

Traditional databases setup may require you to manually perform the following,

  • Installing and managing DB’s — need completely different software and hardware considerations
  • It sometimes requires hiring someone to do
  • software updates
  • Performance
  • Backups

usually a Database Admin on demand. These things will be taken care of by RDS solutions. Since they support,

  • Regular software upgrades
  • Nightly DB backups
  • Monitoring

Also supports features like,

  • RDS Backups:
  • Periodic backups — occurs daily
  • Backups would be stored up to 35 days
  • easily you can restore DB from a backup snapshot
  • Multi-AZ deployment (AZ stands for availability zone)
  • It allows DB replication to a different zone
  • Automatic failover in case of a catastrophic event
  • Db read replication
  • This is essentially a copy of your DB which is not used in production

What are some small minor details we miss and struggle with AWS being a developer?

  • Make sure you are comfortable with the usage of console search options. Try setting up pins to create quick access to services you use the most.
  • Be conscious of the region you are in. At times you will be in the default region value. You would be charged for the services based on your region sometimes and also region could affect the speed.
  • Set up MFA without fail as it ensures security for your working environment
  • AWS encourages you to organise users under groups and assign permissions to groups rather than individual users.
  • Don’t mess up with the root access always.

What is an elastic IP?

Elastic IP is nothing but a public Ip that can be associated with subnets. When the particular subnet is deleted it stays remained. So that it can be used to associate with others.

What are the auto-scaling groups and load balancers?

  • Autoscaling group — automatically shrink or expand a pool of instances based on pre-defined rules
  • Load balancer — routing appliance that maintains a consistent DNS entry and balances requests to multiple instances.

There is a lot more to cover with AWS technically and descriptively. But my aim is just to create a developer reference markup guide to refresh basics before diving deep into them as AWS developers. I hope this helped you some way refreshing your knowledge on AWS. For further conversations and feedbacks write to me at mariappangameo@gmail.com.


...

Personal blog of Mariappan S. I’m a Web engineer working with React, Vue, GraphQL and Node. Happy engineer turned a happier writer! I am fond of tech, irrevocably in love with teaching it!

Feel free to connect with me on Linkedin or contact me at +91 8072343371