This post summarizes the AWS services that are used to help you write code and reliably build, test and deploy it faster that things would be manually. The overall concept of doing all this automatically is usually summarized as
Continuous Integration Continuous Deployment. Here is a simple
post that nicely explains these concepts.
If you don't want to read any more the tl;dr is this:
* Write code using
AWS Cloud 9
* Debug code using
AWS XRay
* Store code using
AWS Code Commit
* Build and test code using
AWS Code Build
* Deploy code using
AWS Code Deploy
* Watch task progression at runtime from a single interface using
AWS Code
Pipeline
* Use an integrated dashboard for all your tools including issue tracking using
AWS Code Star.
If you're not familiar with Git, I'd strongly recommend reading a little about it before proceeding and playing with all these shiny new AWS tools. A great source is this
chapter from the ProGit book. Once that's done, come back here. It's fine to read through this post as well, even without Git knowledge - it's just easier with that background knowledge.
Cloud 9 IDE
Once you have an idea in mind and want to write software to actualize it, you need a place to write it. A simple text editor works just fine, but as your programs get more complex an
IDE is really helpful. A couple you might be familiar with are
Eclipse and
IntelliJ. However, since this post is about AWS, I must mention the
Cloud9 IDE. It is a browser based IDE that gives you the familiar environment. I haven't played with it too much, but it's good to know there is a web-based option now.
XRay
This
looks like a code-profiler to me. I did not use it so do not have much to say about it. But I'd think the way to use it, will be to write your code and use this to figure out which calls are really slow and see if you can optimize your code further. All the rest I did try out and can confirm they are all very cool tools. So read on.
Code Commit
Once you finish writing all your code, you need a place to store the code. This is where all the
VCS come in. Git is what everyone use these days. The AWS equivalent of Git is CodeCommit. It's so similar that you do not need to learn any new commands. Once you've set your repository up, all the old Git commands work perfectly well. You can add files, commit them and push them to your Code Commit repository.
All you need to do is
install Git on your machine, create a key pair and
configure your IAM user to use this to authenticate to Code Commit. Clicking the "Connect" button inside the interface gives you instructions per platform if you get stuck.
The coolest thing here is that you can create triggers that'll run as soon as you push code to your repository. Maybe you want to build, test and deploy your code to your test environment as soon as every single commit is pushed. You can do that here by setting up a Lambda function that will be called as soon a commit is made. Which nicely flows into Code Build..
Code Build
Once you have a workflow going where you can write code in an IDE and push commits to a CodeCommit repository, the next step is to make sure that your code builds properly. This is where CodeBuild comes in. All you do is
point CodeBuild to the Code Commit repository where you stored your code and tell it where you want to dump any output artifacts of the program (
usually S3).
It supports branches too, so you can tell it which branch to pull code from in Code Commit. You select your runtime environment, which you need to build code in (Java/Python/whatever), configure a bunch of other options and then
build your project. The result is whatever you get after you hit Code - Build in whatever IDE you use.
The big advantages here are that you do have to spend very little time configuring your software development environment. Also, like I touched upon a bit in the Code Commit section, you could have that Lambda function you wrote as a CodeCommit trigger automatically run Code Build against your code each time a commit is made.
Code Deploy
Once the code is compiled, tests are run and your entire project is built, the last step is usually to deploy it to a web server so your users can then access it. That's where
Code Deploy comes in. You can configure it so it uses the build output (
with a deployable project) and puts it onto every web server you want to have it on.
You have options of using a load balancer as well, if you want traffic to be evenly distributed. Once deployment is complete, the output should appear on all the servers in that group.
Again, remember you can further extend your Lambda function to build
and deploy now as soon as a commit hits Code Commit. Pretty cool :)
Code Pipeline
Code Pipeline isn't something new but it certainly makes life much easier. It helps though if you understand the the 3 previous services I talked briefly about earlier - since the screens in Code Pipeline deal with these 3 services and ask you for input. So I'd recommend understanding those Code Commit, Code Build and Code Deploy really well before using Code Pipeline.
Pipeline basically is a wizard for the other 3 services. So it'll prompt you to tell it where your code is
(Code Commit) , what to build it with (
Code Build) and what to deploy it with (
Coce Deploy)
. If you already have roles and resources set up successfully when you played with the other 3 services - this should feel very intuitive when you do it. A couple of great tutorials are
here and
here. Also, a nice writeup on how someone automated the whole process is
here.
The coolest thing about Pipeline is that you can see everything, stage by stage and where each stage is once you create it. For example: Once your code is pushed to Code Commit (
as usual) and you have the Pipeline dashboard open, you can actually see each stage succeeding or failing, after which you can troubleshoot accordingly.
CodeStar
Managers should love this one. I used it just a bit but it has this fantastic looking dashboard that gives you a unified view of every single service that you are using. So in short, it has links to C9, CC, CB, CD and CP. So if you didn't cheat and did everything step by step :) you should see all your commits, builds and pipelines by clicking on the buttons on the fancy dashboard that is CodeStar.
The additional feature here is integration with Jira and Github where you can see all your issues as well.
So in short CodeStar is a one stop shop if you've bought into the AWS development environment and want to be tied into it for years to come, while parting with your money bit by bit :)