Case 1. “/whatis”: a slack command server

Business: When Slack users input a command like “/whatis GDPR”, search on wiki pages and respond in 3 seconds what GDPR is.

Generation 1. servers on machines

ElasticSearch: to respond in less than a second

Ngrok: to pierce the private network

Gen 2. containerized

Docker: to make deployments reliable

Gen 3. Cloud (AWS EC2 + Amazon ElasticSearch Service)

To get rid of on-premise server room, which occasionally suffers from power outages.

EC2: a drop-in replacement of bare metals

AWS ElasticSearch Service: a drop-in replacement of Elastic Search servers

Gen 4. Serverless (AWS API Gateway + AWS Lambda + EventBridge)

To get rid of EC2, which is occasionally stopped and need to manually restart and change slack configurations

API Gateway: ingress gateway; authentication

Lambda: pay-as-you-go; fast cold-starts

EventBridge: cron jobs

Case 2. “GODIVA”: Go Dependency Visualizer

Business: A static site, internal network access only

Generation 1. Nginx + Docker + static files

Nginx: to host a static site.

Docker: to make deployments reliable

Gen 2. Cloud

To get rid of BJO server room, which occasionally suffers from power outages.

Route 53: a DNS to resolve host to EC2’s ip

EC2: to migrate from bare metals

Gen 3. API Gateway + S3

To get rid of EC2, which is occasionally stopped and need to manually restart.

Route 53: a DNS to resolve host to API Gateway’s execution endpoint

API Gateway: ingress gateway; authentication

S3 files: a drop-in replacement of local files