One of our strengths at Tryolabs is that we have people coming from diverse technological backgrounds. In order to make sure that everyone who joins the company, no matter their previous experience, can be up to speed with developing apps with the stack we usually use, we have an extensive onboarding process that involves the development of a real application (frontend, backend and some data science), with a coach, code reviews, and iterative improvements.
An interesting skill that sometimes is neglected (especially with junior devs) is how to put apps into production in a robust and scalable way. It is desirable that our apps are highly available (meaning they are very rarely down), and have mechanisms so they can tolerate load of concurrent users without crashing or slowing down.
For doing this, we use cloud providers, such as Amazon Web Services (AWS) , Google Cloud Platform or Microsoft Azure. Eeach provider offers its own services to make the deployment of our apps easier. Some, for example, offer different types of databases as a service, so we don't need to handle database administration or scaling. Scalable file storage solutions are very common, too.
It is interesting to note that the services offered by these cloud providers can affect the design (e.g. the database you use) of your app. Very scalable apps that some years ago were very difficult to develop are now almost trivial to do.
So, given the importance of cloud providers and AWS in particular, we've created – and are now open sourcing – a guide we call AWS Workshop.
In this workshop, a developer learns how to deploy a demo application using several services available in the AWS stack. As the demo app to be deployed, we chose an open source test application called Conduit, which is handy to learn new frameworks because the same app has implementations in multiple frameworks for backend and frontend. In particular, we use the version built with React and Django + Django-Rest-Framework backend, which most resembles the technologies we use for several of our projects.
In the workshop, developers learn:
- Setting up users in your AWS account.
- Deploying a website on S3, a backend in EC2 and a database in RDS.
- Setting up Load Balancing and Auto Scaling Groups.
- Setting up a VPC and a bastion instance.
- Deploying the application using Elastic Beanstalk.
Are you new to AWS and want to use its essential services to deploy your app? Get started with the open source workshop right here!
In the future, we'll add other services such as a deployment using AWS Lambda (pull requests are welcome!)
This article was originally published here.