I love working on the full stack of technologies involved with developing an application. It's satisfying to design and implement a feature on the backend and request the data from the frontend application to render out something awesome. It's very rewarding but it can be a long process to set everything up. It's often a boilerplate experience and I often find myself doing a lot more devops than development. This got me looking for alternative ways to setup servers and systems that could aleviate this need to iterate on systems rather than programs.
I've recently come across some pretty effective concepts surrounding the design of endpoints. My career has been focused on backend server code recently where I've needed to create, extend, and refactor endpoints. I'd now like to share what I've discovered along the way that has made my endpoint code more maintainable, testable, and performant. I'll be using a little bit of ES6 style NodeJS code with Express syntax to explain my points.
DynamoDB is a NoSQL Document Key-Value Database hosted by AWS. They offer to serve their database as a scalable cloud solution offloading the work of maintaining a database from developers. DynamoDB also features many integrations with other elements of the AWS stack like triggering Lambda functions and analyzing data in Elastic MapReduce. They support downloading and installing a local version of the database for development which allows developers to test without worrying about being charged.