Keys to Crushing it at Software Development on AWS

Photo by David Jones on UnsplashEvery type of media in 2022 is starting to take on this corporate aesthetic that looks like a psychological experiment for making capitalism more attractive. There’s always a picture of like a bike or a potted plant or s…

Photo by David Jones on Unsplash

Every type of media in 2022 is starting to take on this corporate aesthetic that looks like a psychological experiment for making capitalism more attractive. There’s always a picture of like a bike or a potted plant or something just thrown in there at random.

Of course I would never stoop to such tactics /s.

Anyway here are some keys to absolutely crushin’ mad fuggin’ riffs on AWS!

If all you’re needing is a dashboard…

I highly suggest stopping for a minute and taking a look into using Honeycode, Quicksight, or a Cloudwatch Dashboard. So many times we think we need to reinvent the wheel and code up another custom application from scratch. That’s really not the case anymore in 2022. Amazon Honeycode is a No-Code solution that can give you an authenticated, native mobile application that can display your data in a variety of displays. There are templates you can pick such as Inventory Systems, Project Trackers, and more.

If you require more elaborate visualizations or a particular data source Amazon Quicksight is an easy-to-use cloud software for creating business intelligence dashboards and more. And then Amazon Cloudwatch integrates with pretty much all of AWS and has a dashboard feature. You can take logs from any app running on EC2, ECS, Lambda, or wherever and display the metrics with minimal effort. It also comes with alarming capabilities. Furthermore, device telemetry data from can be pulled from AWS IoT Core to be visualized in Cloudwatch as well.

Try to have as many requirements as you can up front

Should I use millions of Lambda functions with millions of provisioned concurrency autoscaling policies or simply spin up a sufficiently stout EC2 instance and call it a day?. Where in the world is your customer base located? Am I migrating from an another hosting service? What does my expected volume of traffic look like? How secure does this thing need to be? And just how could a loving god allow so much suffering? Find out the answers to these burning questions up front.

Do whatever is fastest

Find a solution from serverlessland, stelligent, awsome-cdk, aws-samples, construct-hub, etc. that does 90% of what you want and fill in the rest. Chances are these templates are also more robust that something written from scratch.

Always have a pipeline and always have Infrastructure as Code (IaC)

CI/CD pipelines have so much literature written about them that I’m not even going to touch on that topic. Just be aware that it is a necessity to any modern, successful application. Furthermore, you’re going to want to deploy your infrastructure changes through that pipeline instead of having such changes take over your terminal for an entire day. AWS Cloudformation, SAM, and CDK work best for deploying infrastructure, as they are maintained by people at AWS (although SAM and CDK are open-source). SAM and CDK are simply wrappers around Cloudformation and they can be compiled/transpiled into template files. Other 3rd party frameworks include Serverless (for serverless applications, as the name would imply) and Terraform. Additionally you can bring infrastructure configuration management to the cloud using AWS OpsWorks and either Chef or Puppet.

CDK is my all-time personal favorite because you can get the same output in way fewer lines. Plus, it’s literally code so you can use object oriented programming to extend existing patterns and save a lot of time. Whatever you choose, I highly emphasize the use of an IaC linter AND adding that linter as a passing requirement in your CI/CD pipeline. Should you go the CF/SAM/CDK route my tool of choice is cfn nag:

GitHub – stelligent/cfn_nag: Linting tool for CloudFormation templates

Make sure you follow Cloud Infrastructure best practices as well

Before you start working in a “Dev” account make sure the right AWS account governance is in place. Reduce the blast impact radius by setting up an AWS Control Tower multi-account environment. A typical multi-account strategy will look something like this with an additional “Account Vending Machine” to set up developer sandbox environments, as well as Dev, Test, and Prod environments.

AWS Multi Account Strategy

Know your pricing!

Pricing for services related to software development can be tricky because there are so many conditions. Take for example AWS Lambda. Basic factors that will affect your bill include: region, CPU architecture (x86 or ARM), memory allocation (128 MB to 10,240 MB as of 2022), duration of function execution (1 second to 15 minutes), number of invocations. Thereafter come additional variables in your pricing algorithm. Are you running your functions “inside” a custom VPC (your answer should be YES)? Is your function data-intensive enough to the point that 512 MB of ephemeral storage isn’t big enough? Are cold-start times a problem for your latency-sensitive service?

Knowing your pricing isn’t just for avoiding expensive stuff though. Where you can really benefit from this knowledge is knowing AWS’s famous free-tier.

Explore specialized solutions for industry verticals

AWS has both services and full-on products for several industries such as healthcare, automotive, energy, media, supply chain, and manufacturing. For example, manufacturing equipment can be monitored with specialized hardware provided by AWS Monitron. If you want to use your own monitoring devices, AWS Lookout for Equipment can set up automatic actions to be taken when anomalies are detected and AWS IoT Sitewise can collect, store, organize and monitor the data.

Choose a source control strategy and stick with it

CodeCommit is my top choice because it’s already integrated with the rest of AWS. Github would be my #2 choice because it has a wide industry adoption rate and lots of documentation, integrations, community forums, etc. Gitlab and Bitbucket are a little more difficult to integrate in my experience. As far as branching strategies goes I’ve normally gravitated toward trunk-based; I don’t pay too much attention to this because you can go down a real rabbit hole

Code reviews can be time consuming, so having less reviewers can be better. Having the right tools lined up such as linters, unit tests, and security scans cut down on most things we used to worry about getting out into production. You still need at least one set of eyes on the code in each PR to make sure you’re not overlooking the obvious. Having a combination of git hooks and git guardian will catch security vulnerabilities before they reach the PR stage. Always deploy via pull requests and automated deployment triggers.

Learn to log correctly

Logging for all phases can be done with a combination of AWS Cloudwatch (application logging) and AWS Cloudtrail (access logging), they don’t need any additional configuration most of the time and are easy to reason with.

Conclusion

These are the keys I can think of off the top of my head. Take what I say with a pinch of salt. I’ve used AWS since 2015 but with over 200+ services it’s impossible to know it all.

Level Up Coding

Thanks for being a part of our community! More content in the Level Up Coding publication.
Follow: Twitter, LinkedIn, Newsletter
Level Up is transforming tech recruiting ➡️ Join our talent collective


Keys to Crushing it at Software Development on AWS was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.


Print Share Comment Cite Upload Translate
APA
Andrew Allison | Sciencx (2024-03-28T22:09:27+00:00) » Keys to Crushing it at Software Development on AWS. Retrieved from https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/.
MLA
" » Keys to Crushing it at Software Development on AWS." Andrew Allison | Sciencx - Tuesday June 28, 2022, https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/
HARVARD
Andrew Allison | Sciencx Tuesday June 28, 2022 » Keys to Crushing it at Software Development on AWS., viewed 2024-03-28T22:09:27+00:00,<https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/>
VANCOUVER
Andrew Allison | Sciencx - » Keys to Crushing it at Software Development on AWS. [Internet]. [Accessed 2024-03-28T22:09:27+00:00]. Available from: https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/
CHICAGO
" » Keys to Crushing it at Software Development on AWS." Andrew Allison | Sciencx - Accessed 2024-03-28T22:09:27+00:00. https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/
IEEE
" » Keys to Crushing it at Software Development on AWS." Andrew Allison | Sciencx [Online]. Available: https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/. [Accessed: 2024-03-28T22:09:27+00:00]
rf:citation
» Keys to Crushing it at Software Development on AWS | Andrew Allison | Sciencx | https://www.scien.cx/2022/06/28/keys-to-crushing-it-at-software-development-on-aws/ | 2024-03-28T22:09:27+00:00
https://github.com/addpipe/simple-recorderjs-demo