Building a modern web app is probably going to require using a set of micro-services. These micro-services are usually combined under one brand umbrella, for example AWS, Google Cloud or Digital Ocean. Here we will give an overview of the services that are available from AWS. Because we can’t architect an application if we don’t know what is available to us for our stack!
This will not be an exhaustive overview, just the main services and the ones that I think are important for my application ideas.
This is the top level account owned by the website or application owner. This is the account that gets the bill from Amazon!
Identity & Access Management. Every AWS account can then create IAM users, which can be given access to different services depending on their roles. This is identify management for developers, not for users.
Cognito is the identity management service for users. It creates a pool of users, authenticates them, and then lets you associate roles or levels of access to each of them, as well as group them into identity pools. Cognito really should have it’s own blog post because this is an expansive topic, and getting authentication and walling off users data is a huge portion of any application. This is a must use service if you are creating an app with users on AWS.
Amplify is the competitor to Google Firebase. It is a CLI tool that simplifies the process of provisioning common AWS services. It is for people who are looking to spin up simple applications quickly.
These are virtual machines (IE Servers) that are located in regions. Basically every application is going to be using one of these, or multiple spread across multiple regions with a load balancer to direct traffic to them. These can scale horizontally automatically.
Lightsail is a service that quickly provisions an EC2 server and installs an operating system and software stack for you, like Wordpress, or MERN. It is used to rapidly spin up a hosting environment for common website stacks. Lightsail is similar to Amplify in the sense that it is designed to streamline the process of provisioning services for simpler tasks.
Route 53 is the Amazon DNS service. It integrates directly with their load balancing service, so if you are using a horizontally scaled stack of EC2 servers, you will probably want to use Route 53 to handle your domain name registration.
Simple Email Service. This is the Amazon email service, like Office 365 or Mailchimp, but it integrates into their other services like Cognito for verification codes and forgotten passwords.
These are the items that will build the CI/CD pipeline
Cloud 9 is a web based IDE. There honestly are not a lot of benefits to using a cloud based IDE vs a desktop one, however it can be useful for collaboration. Multiple people can work on a project without having to containerize it.
An artifact repository service. Essentially lets you create a private secure library of packages, that integrate with IAM so you can have variable security roles. I imagine you would only need this service if you are working on a LARGE project with many developers.
AWS CodeBuild is a fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers. CodeBuild scales continuously and processes multiple builds concurrently, so your builds are not left waiting in a queue. You can get started quickly by using prepackaged build environments, or you can create custom build environments that use your own build tools. With CodeBuild, you are charged by the minute for the compute resources you use.
This is the AWS equivalent of Github or Bitbucket. A secure code repository.
Automates code deployment. Can deploy to Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.
AWS CodePipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. CodePipeline automates the build, test, and deploy phases of your release process every time there is a code change, based on the release model you define. This enables you to rapidly and reliably deliver features and updates. You can easily integrate AWS CodePipeline with third-party services such as GitHub or with your own custom plugin. With AWS CodePipeline, you only pay for what you use. There are no upfront fees or long-term commitments.
AWS CodeStar enables you to quickly develop, build, and deploy applications on AWS. AWS CodeStar provides a unified user interface, enabling you to easily manage your software development activities in one place. With AWS CodeStar, you can set up your entire continuous delivery toolchain in minutes, allowing you to start releasing code faster. AWS CodeStar makes it easy for your whole team to work together securely, allowing you to easily manage access and add owners, contributors, and viewers to your projects. Each AWS CodeStar project comes with a project management dashboard, including an integrated issue tracking capability powered by Atlassian JIRA Software. With the AWS CodeStar project dashboard, you can easily track progress across your entire software development process, from your backlog of work items to teams’ recent code deployments.
What is the main difference between pipeline and codestar?
A managed ETL (extract, transform and load) service that makes it simple and cost-effective to categorize your data, clean it, enrich it, and move it reliably between various data stores. You use Glue for the following
- To build a data warehouse to organize, cleanse, validate and format data
- Load data from disparate sources into data warehouse
- Creates common source of data for decision making
- Event driven ETL’s
- Understand data assets