Starting out with AWS can be a daunting task. Amazon has done a great job of documenting and presenting systems and services in a clear and concise manner, but when you try to apply those concepts to your specific infrastructure or use case things might not always simply click into place.
Understanding the benefits of working with AWS and weighing them against the challenges is key to a successful implementation. It is always important to put everything into the context of the particular organization or project you are considering AWS for. Some benefits seem universal: usage-based billing, low upfront infrastructure costs, just-in-time infrastructure, for example, translate well to most implementations. But beyond these, it gets more complicated to categorically embrace AWS in every situation. Is having my critical files on S3 better than keeping them on my branch-office file server? What if my internet is down? Will my legacy windows server app play nice with an RDS backend? What about security? Is AWS safe?
These are the types of questions you will face again and again, and the answers might be different for every particular use case. Deciding if AWS is right for you becomes a little easier if you consider AWS as a collection of tools (or services). Picking the right tool for the job at hand is what your decision-making process should be focused on. Let me offer some practical considerations.
1. AWS can be as much or as little as you want it to be
Doing everything in AWS can be a great concept if you are starting out from scratch. If your business case requires a solution that can handle rapid growth while keeping costs low there are very few alternatives to AWS (or cloud platforms in general) that come close. But for many company architects, the reality might be that they don’t have the luxury of starting over tabula rasa. They might be expected to move something ‘to the cloud’ that was never designed with SOA principles for example (say a legacy client-server app with tight coupling). In such cases, it can be more difficult to see benefits from moving. However don’t focus only on the app itself: consider aspects such as business continuity & disaster recovery, running costs, availability, and scalability and compare what you get on AWS vs what you have now.
Look at what your customer or organization is doing and try to find things that make sense to do with AWS. Consider using EC2 to have cheap and disposable test machines. Keep some backups on S3 or Glacier instead of investing in more tapes or NASs.
Really embracing AWS should be an evolutionary journey for many organizations.
2. You don’t have to go it alone
If you sign up with AWS directly, understand exactly what you are getting. Amazon provides you with a platform of services that you can use. There will not be a lot of hand-holding. There will not be a lot of direct support. You are expected to know what you are doing at least to some level. Although AWS offers premium support options, these can get expensive quickly and might not be cost effective for smaller deployments.
Depending on your particular situation it might make more sense to sign up for AWS services through an AWS partner. They can assist you in planning and deploying your AWS solution as well as assisting in the management and monitoring of the solution. If you are asked to deploy something with 24*7 uptime for example but don’t have the IT resources to actually cover everything 24*7, going with a partner organization that can offer that constant level of support can be a smart move in the long run.
AWS is able to give you the tools to monitor your instances 24*7, but no one from AWS will actually fix anything for you if your EC2 instance crashes. You might be able to architect your solution so that it is redundant on many levels, but if having managed services is important to you and your customers then make sure you factor this into your planning.
3. Security is important
Is AWS safe? I think this must be one of the most frequently asked questions in any implementation. The short answer is that AWS is as safe as you make it. Understand where your responsibility starts and where Amazon’s responsibility ends. AWS dedicates a huge amount of resources to make sure their infrastructure and services are safe. But once you start using those services it is up to you to make the right decisions. AWS is like a car manufacturer – they try to make their product as safe as possible, but if you drive recklessly you only have yourself to blame.
A simple example: spin up an EC2 windows instance and open port TCP 3389 to the world. Smart? Definitely not. I can almost guarantee that within 24 hrs at the latest you start getting password spammed. Of course, this will happen whether your server is on AWS or any other provider or in-house – an inherent risk of connecting anything to the web. But it underscores the point that AWS makes it easy to avoid such a mistake, but if you go ahead and ignore best practices then the security problem is not AWS – it is you.
There will be more sophisticated situations where security can make or break an AWS deployment. Some services at AWS might not be at a stage yet where you want them to be (e.g. not all RDS instances have transparent encryption for example) which might require you to rewrite your application to encrypt data within the application or switch back ends to something that works at AWS. What you should not do is put unencrypted data at AWS and then complain if someone steals it. Design your solutions under the assumption that people will try to breach your security and do everything you can to prevent that from happening. A healthy dose of paranoia can go a long way to improving system design.
Also, be aware of AWS specific limitations. One example: because of the way AWS stores data in S3, you cannot audit a particular HDD and say ‘my data is stored here’. A strange request maybe but one that is made in certain industries and for certain applications. Be aware of how things work before making the leap.
When considering security the reality in many cases is that AWS is probably more secure than many in-house IT departments – the certifications and resources they can boast of is a testament to that. But your solution and data are only as secure as the procedures and systems you put in place and the choices you make when deploying and building your solution.
What Exactly Is a Cloud Architect and How Do You Become One?
One of the buzzwords surrounding the cloud that I'm sure you've heard is "Cloud Architect." In this article, I will outline my understanding of what a cloud architect does and I'll analyze the skills and certifications necessary to become one. I will also list some of the types of jobs ...
Boto: Using Python to Automate AWS Services
Boto allows you to write scripts to automate things like starting AWS EC2 instances Boto is a Python package that provides programmatic connectivity to Amazon Web Services (AWS). AWS offers a range of services for dynamically scaling servers including the core compute service, Elastic...
Content Roadmap: AZ-500, ITIL 4, MS-100, Google Cloud Associate Engineer, and More
Last month, Cloud Academy joined forces with QA, the UK’s largest B2B skills provider, and it put us in an excellent position to solve a massive skills gap problem. As a result of this collaboration, you will see our training library grow with additions from QA’s massive catalog of 500+...
DevSecOps: How to Secure DevOps Environments
Security has been a friction point when discussing DevOps. This stems from the assumption that DevOps teams move too fast to handle security concerns. This makes sense if Information Security (InfoSec) is separate from the DevOps value stream, or if development velocity exceeds the band...
Test Your Cloud Knowledge on AWS, Azure, or Google Cloud Platform
Cloud skills are in demand | In today's digital era, employers are constantly seeking skilled professionals with working knowledge of AWS, Azure, and Google Cloud Platform. According to the 2019 Trends in Cloud Transformation report by 451 Research: Business and IT transformations re...
Disadvantages of Cloud Computing
If you want to deliver digital services of any kind, you’ll need to estimate all types of resources, not the least of which are CPU, memory, storage, and network connectivity. Which resources you choose for your delivery — cloud-based or local — is up to you. But you’ll definitely want...
Google Cloud vs AWS: A Comparison (or can they be compared?)
The "Google Cloud vs AWS" argument used to be a common discussion among our members, but is this still really a thing? You may already know that there are three major players in the public cloud platforms arena: Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP)...
Deployment Orchestration with AWS Elastic Beanstalk
If you're responsible for the development and deployment of web applications within your AWS environment for your organization, then it's likely you've heard of AWS Elastic Beanstalk. If you are new to this service, or simply need to know a bit more about the service and the benefits th...
How to Use & Install the AWS CLI
What is the AWS CLI? | The AWS Command Line Interface (CLI) is for managing your AWS services from a terminal session on your own client, allowing you to control and configure multiple AWS services and implement a level of automation. If you’ve been using AWS for some time and feel...
Cloud Academy’s Blog Digest: July 2019
July has been a very exciting month for us at Cloud Academy. On July 10, we officially joined forces with QA, the UK’s largest B2B skills provider (read the announcement). Over the coming weeks, you will see additions from QA’s massive catalog of 500+ certification courses and 1500+ ins...
AWS Fundamentals: Understanding Compute, Storage, Database, Networking & Security
If you are just starting out on your journey toward mastering AWS cloud computing, then your first stop should be to understand the AWS fundamentals. This will enable you to get a solid foundation to then expand your knowledge across the entire AWS service catalog. It can be both d...
How to Become a DevOps Engineer
The DevOps Handbook introduces DevOps as a framework for improving the process for converting a business hypothesis into a technology-enabled service that delivers value to the customer. This process is called the value stream. Accelerate finds that applying DevOps principles of flow, f...