Sharing Our Passion for Technology
& continuous learning
  • Teammates sitting together and looking at code

    Node Reference - History

    Prerequisites This article builds on the prior article: Patch. Tracking History The way our service is currently built, all modifications (PATCH requests) happen in-place to records in DynamoDB. It is common in most production applications that someone will want to know the history of a record. A business user may...
  • Teammates sitting together and looking at code

    Node Reference - Patch Product

    Prerequisites This article builds on the prior article: Node Reference - Get Product by Id. Supporting Updates Sooner or later, there will be a need to modify a product. Except in the case of immutable data stores, rarely are there entities that are truely “insert only”. In order to support...
  • Teammates sitting together and looking at code

    Node Reference - Get Product by Id

    Prerequisites This article builds on the prior article: Node Reference - Listing. Add Get By Id At this point, we have only one way to get Products. We have to list all products and page through them to find the one we want. However, a lot of the time, a...
  • Teammates sitting together and looking at code

    Node Reference - List Products

    Prerequisites This article builds on the prior article: Node Reference - Monitoring. Add listing Clients of our service will need a way to find products. For that, we need a product listing service. DynamoDB provides an operation for listing the contents of a table called a ‘scan’. (As a table...
  • Teammates sitting together and looking at code

    Node Reference - CloudWatch

    Monitoring How do we answer the question: “Is our application performing correctly?” With just one application server we could remotely log into the server, look at CPU and memory load, run grep on the log files and then determine that everything is fine. This approach is manual intensive and obviously...
  • Teammates sitting together and looking at code

    Node Reference - Put Product

    Prerequisites This article builds on the prior article: Node Reference - DynamoDB. Create put test/endpoint First, lets write a spec for our POST /products endpoint. Create a file called products/createProduct.spec.js with the following contents: const proxyquire = require('proxyquire'); describe('products', function () { describe('createProduct', function () { beforeEach(function () { process.env.PRODUCTS_TABLE_NAME...
  • Teammates sitting together and looking at code

    Node Reference - DynamoDB

    Prerequisites This article builds on the prior article: Node Reference - Authentication. Add DynamoDB Before we can start building out our product endpoints, we need a place to store them. For that, we are turning to DynamoDB. Tables are the main component, not a “database”, so we can create just...
  • Teammates sitting together and looking at code

    Node Reference - Authentication

    Prerequisites This article builds on the prior article: Node Reference - Cognito. Adding authentication In order to leverage our new identity provider, we need to add a middleware into our Koa pipeline. This middleware will reject requests that do not contain valid tokens. We can accomplish this by using two...
  • Teammates sitting together and looking at code

    Node Reference - Cognito Setup

    Cognito setup In order to secure our application we are going to leverage OpenID Connect. Each request to our application from either another service or a logged in human user will contain a JSON Web Token (a.k.a. JWT) as a “Bearer” token in the Authorization header. This token not only...
  • Teammates sitting together and looking at code

    Node Reference - HTTPS

    Prerequisites This article builds on the prior article: Node Reference - HTTPS/DNS. HTTPS and DNS In this post we are going to add a friendly DNS address that can be used to invoke our service so that clients do not have to use the auto-generated AWS load balancer name. We...