Today we’re using so many services in our smartphones, or on the web. In order to make them accessible, it isn’t that a short or fun ride, unless you have AWS.

Some of you might be thinking, why cant I just buy my own network equipment and setup a network of my own, and connect it to the internet for everyone to use?
If you’re trying to develop something which you wish to succeed and make you grow by any means you wish and also maintain that network by yourself, I wish you the best of luck because you will need it 🙂

Think for your self for a second what does it mean to host some kind of service to the internet for everyone using your own equipment.
You can buy a computer from your local tech store which has an amazing specs like — 64 Gb RAM, 8 physical and 16 virtual cores, 1TB of SSD which is even NVMe, and simply let that computer run with your application all the time.
That computer would be in your home LAN, and your router will provide the connectivity for the internet.

What do you think your performance overall will be?

  • Networking — Home computers doesn’t have enterprise networking performance, and because of that your application will suffer from networking latency.
  • Security — In this section I can go more than 5 articles but lets just say, if you want to consider security you need to be fully aware of your architecture from end to end, to provide high security.
  • Computation — If your PC is overloaded with requests and crashes, who power it up again to continue it’s work? Or even, how do you take care of the requests which been lost?

Off course, you can buy the best equipment there is to provide the best performance in terms of computation time, and also with networking, but you’re still using regular home internet lines.
If you even do make some exceptional contract and have awesome network connection, you do still need support a farm of computers and maintain them by yourself, unless you hire your best friend or some guy to support that feature.
BUT YOU DO STILL NEED TO WORRY ABOUT ALL THAT STUFF!

Because of that but not only, there are many other solutions for this, but in the end, many cloud hosting types were born.
It simplifies basically everything for you and lets you worry about the application itself, which is actually your goal to give something meaningful to your customers and grow the best you can, focusing on the important stuff.

We can go even deeper on the subjects but the main thing is was all ready said out loud, so I hope you will agree with me on this one 🙂

Today the big guns in terms of hosting services are Amazon Web Services(AWS), Google Computing Platform(GCP) and Azure.
There are many more but these are the main ones, and we will focus on AWS.

Computers on the cloud, what?!..

In my previous job, I’ve had the joy of messing with networking equipment while developing on the product I was involved in.
In my current job, I’ve had the opportunity to work with AWS which is actually the first time experiencing hosting services like AWS.

I’m so grateful that happened, because I can’t even imagine how developers today doesn’t use AWS, if they need cloud hosting.
You can create an entire network architecture which can automatically scale it self up, balance the networking traffic and computation between machines, use secured connection between the machines, create virtual networks, see logs of your machines which allows you to monitor your application easily.

You might be thinking for yourself, well it sounds great but what about the cost?

As my father used to say, everything has a price for it 🙂
But the great thing with AWS, they charge you by the overall use you have consumed.
If you will run your machine for X hours, you will pay for that X hours.
The pricing is changing from service to service, but I think you get the point.

Off course each cloud provider is great in it’s own way and everyone has positive and negative sides, so you need to choose careful by your needs.

In AWS we got many services but we will focus on the main ones which I’ve experienced and from people I’ve heard they use a lot today, so you will have a wide clue what it offers:

  • EC2(Elastic Cloud) — Virtual machines which provides you machines for use like how you setup a machine using VirtualBox/VMWare/ESXi and more..
  • VPC(Virtual Private Cloud) — Useful feature which allows you to create a private LAN on AWS, for cases you want to split your cloud for sub networks, if you wish to split responsibilty areas and also for security.
  • Load Balancer —It’s actually a service under EC2, but what it gives you, is to create a entity that is connected to a thing called Target Group.
    The responsibility of the Load Balancer, is to balance the networking traffic between the EC2 instances which are inside the Target Group you’ve configured.
  • Simple Storage Service(S3) —You know the cases you need a place to store configuration files, build outputs(.o, .a, .so, .jar, .dll, …), docker images or any other files and you want to receive them while your application is running, initial boot or any other operation?
    Well, that’s S3 🙂
  • Lambda — Offers a way to only include your runtime (Node, C#, C/C++, Java, Python) and the code you wanna execute. This is a serverless option if you don’t wanna complex yourself with OS and hardware configuration and setup, and just want something to be executed. By the way, it’s not really serverless, you just don’t see the configuration and mingle with OS/hardware specific subjects.
  • Route 53 — By the name suggests of the port number, it’s DNS service.
    This service allows you to create domain URLs and also subdomains, so your machines will be accessed by a domain URL and not an IP address.
  • ACM(Amazon Certificate Manager) — In case you want to use secure connections to your instances, you can use this service to generate certificates (X509) from Amazon.
    The great thing is that they will be responsible to renew them and everything 🙂

Elastic Cloud(EC2)

AWS has this great thing called “AWS Marketplace”, which have variety of choices for machine operating systems such as Ubuntu, Windows and many more options that could be automatically configured for you.

The types of machines we can have are:

  • Regular EC2 Instance — Simple virtual machine which has a base image for the operating system.
  • Beanstalk — In case you need an environment which is pre-configured or has some applications pre-installed in it for you to use.
  • AMI(Amazon Machine Image) — It’s a complete image that is configured for your own choice, which you made by yourself and can use it to run a virtual machine.

You might already understand that each AMI is actually a Beanstalk and each beanstalk is a machine instance.
Simply.. they are derivative from the parent of all EC2 Instance, which is a simple EC2 Instance.

In case you need a machine that doesn’t exist on AWS Marketplace you can create an AMI which would be configured and installed as you wish, and use it.
A suggestion from me, use AMI and Beanstalk if it’s really needed because if you can make a machine that each time it gets up, and can install itself, it could be updated with the software versions you need so you will be updated all the time.

If you basically wish to setup a machine, you can create an instance that has an OS and that’s it.
But I do suggest for you to create something called “Launch Template”.
It basically versioning your configuration for some type of machine you need, and it allows you the easy of configurations and sees the history for that machine you created.

In EC2, while we configure a new machine we have many configurations but the main ones:

  • Image — The OS which we will use for that machine.
  • Network — You can configure special network adapters if you need a product that is very high consumption of networking.
  • Storage — Size and type of storage of the machine in case you need high throughput from your file system.
  • Security —What kind of operations that machine can do and who can contact it.
  • User data — Basically a bash script which is executed on the boot of the operating system.
    We can use this script to copy files from S3, configure the machine, start our applications and more…

Conclusion

Today, may companies use AWS because of the simplicity to deploy their application or use it for testings or even security to check applications if they have any malwares in them.
There are many services inside AWS and I warmly suggest you to go there and see what they have to offer, because you can even learn new things from only reading and also have innovative ideas for new things.

The goal was to give a simple and short explanation of AWS and at a brief about the hosting services and what they do, and I hope we have reached it 🙂

I hope you had a great time reading this piece, and if you have any more further questions I would be delighted to answer them.
Also, if you have any opinions or suggestions for improving this piece, I would like to hear 🙂

Thank you and have a great journey on your journey for knowledge! 🙂

Sources

Amazon web services website — https://aws.amazon.com/

Author

I simply love learning and improving by what I do, and by doing so strive to achieve my goals which is also help others to achieve theirs.

Write A Comment