Posts

Showing posts with the label software engineering

NextJS Practice Series

Image
Introduction NextJS is a powerful React framework that enables developers to build high-performance web applications with features like Server-Side Rendering (SSR) and Static Site Generation (SSG). Key advantages include improved SEO, automatic code splitting for faster page loads, a built-in routing system, and an optimized developer experience with "Fast Refresh" and easy deployment through platforms like Vercel. Prerequisites NextJS framework is primarily used for building web applications based on ReactJS and is supported with many more features, so if you only have a need to create a Single Page Web Application or have never started with React , you should look up some basic knowledge before continuing with the posts in this series. Detail Using styled-components in Next Applications Understanding React Server Component Guide to Setting Up Jest Testing for a NextJS Project AWS Guide to deploying NextJS on AWS ECS Guide to Setting Up CI/CD for NextJS with Jenkins, Gitlab,...

Guide to Querying and Pagination with AWS DynamoDB in NestJS

Image
Introduction In my previous article, I provided a basic guide on initializing and using AWS DynamoDB, but in this article, we will delve deeper into QueryCommand. In AWS DynamoDB, the Query method allows you to search for data based on the primary key (Partition Key) and filter conditions (Sort Key). To optimize performance and cost, DynamoDB supports a Pagination mechanism through the ExclusiveStartKey and LastEvaluatedKey parameters. Applying pagination not only reduces the data transfer load but also enables the application to handle large data tables smoothly, ensuring system stability. Detail Use AWS CDK to create the file lib/dynamodb-gsi-stack.ts import * as cdk from "aws-cdk-lib" import * as dynamodb from "aws-cdk-lib/aws-dynamodb" import { Construct } from "constructs" export class DynamoDbGsiStack extends cdk . Stack { constructor ( scope : Construct , id : string , props ?: cdk . StackProps ) { super (scope, id, props) ...

Guide to Initializing and Connecting AWS DynamoDB

Image
Introduction Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability at any scale. Key benefits include: unlimited scalability, extremely low latency in milliseconds, built-in security, and flexible pricing models based on usage (On-demand) to optimize costs. Detail Use AWS CDK to create the lib/dynamodb-stack.ts file import * as cdk from "aws-cdk-lib" import * as dynamodb from "aws-cdk-lib/awsf-dynamodb" import { Construct } from "constructs" export class DynamodbStack extends cdk . Stack { constructor ( scope : Construct , id : string , props ?: cdk . StackProps ) { super (scope, id, props) const productTable = new dynamodb. Table ( this , "ProductTable" , { tableName: "Products" , partitionKey: { name: "id" , type: dynamodb.AttributeType. STRING , }, billingMode: dynamodb.Bi...

Setting up a CI/CD Pipeline for NestJS with Jenkins, Gitlab, and AWS EKS

Image
Introduction Jenkins is a leading open-source automation tool that enables Continuous Integration (CI) and Continuous Delivery (CD). With its vast plugin ecosystem, Jenkins helps automate every stage from build and test to deploy, reducing manual errors and increasing software development speed. Gitlab is not only a Git-based source code repository but also provides a comprehensive DevOps platform. Gitlab's key advantages are tight repository management, built-in Webhooks to trigger external pipelines, and powerful project management and code review features that help teams collaborate effectively. In this article, I will guide you through setting up Jenkins to automatically pull source code from Gitlab and deploy to AWS EKS. The summary of the steps will be as follows: Build a source docker image from the NestJS source code and push it to AWS ECR Create an EKS Cluster and deploy with that docker image Setup configuration for Jenkins Add a Jenkinsfile to the NestJS project and push...