🛒 Case Study: āļ—āļģ E-commerce Microservice (Order, Payment, Notification) āļšāļ™ AWS

Sharing is caring!

āļšāļ—āļ™āļģ

āđƒāļ™āļĒāļļāļ„āļ—āļĩāđˆāļĢāļ°āļšāļš E-commerce āđ€āļ•āļīāļšāđ‚āļ•āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļšāđƒāļŦāđ‰āļĢāļ­āļ‡āļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļˆāļģāļ™āļ§āļ™āļĄāļēāļ āđāļĨāļ°āļĄāļĩāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļšāļšāđāļĒāļāļŠāđˆāļ§āļ™ (Microservices) āļ–āļ·āļ­āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļˆāļģāđ€āļ›āđ‡āļ™ AWS āđ€āļ›āđ‡āļ™āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļšāđāļ™āļ§āļ„āļīāļ”āļ™āļĩāđ‰ — āļ”āđ‰āļ§āļĒāļšāļĢāļīāļāļēāļĢāļ­āļĒāđˆāļēāļ‡ API Gateway, Lambda, DynamoDB, SNS, SQS āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļĢāļēāļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļš Order, Payment, Notification āđ„āļ”āđ‰āđāļšāļš Serverless āļ­āļĒāđˆāļēāļ‡āđāļ—āđ‰āļˆāļĢāļīāļ‡

1. āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļĢāļ°āļšāļš E-commerce Microservice

āļĢāļ°āļšāļšāļ™āļĩāđ‰āļˆāļ°āđāļšāđˆāļ‡āđ€āļ›āđ‡āļ™ 3 āļšāļĢāļīāļāļēāļĢāļŦāļĨāļąāļ:

  • Order Service — āļĢāļąāļšāļ„āļģāļŠāļąāđˆāļ‡āļ‹āļ·āđ‰āļ­āđāļĨāļ°āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļĄāļđāļĨ
  • Payment Service — āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļ–āļēāļ™āļ°
  • Notification Service — āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™āļŠāļģāđ€āļĢāđ‡āļˆ

2. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ° Service

āļšāļĢāļīāļāļēāļĢāđāļ•āđˆāļĨāļ°āļ•āļąāļ§āļˆāļ°āļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļ™āļœāđˆāļēāļ™ Event-driven Architecture āđ‚āļ”āļĒāđƒāļŠāđ‰ SNS āđāļĨāļ° SQS āļ—āļģāđƒāļŦāđ‰āļĢāļ°āļšāļšāļĄāļĩāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™ āđāļĨāļ°āļ‚āļĒāļēāļĒāđ€āļžāļīāđˆāļĄāļšāļĢāļīāļāļēāļĢāļ­āļ·āđˆāļ™āđ„āļ”āđ‰āđƒāļ™āļ­āļ™āļēāļ„āļ•

3. Order Service (API Gateway + Lambda + DynamoDB)

āđ€āļĢāļīāđˆāļĄāļˆāļēāļ Order Service āļ—āļĩāđˆāļĢāļąāļš Request āļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰āļœāđˆāļēāļ™ API Gateway āđāļĨāđ‰āļ§āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļģāļŠāļąāđˆāļ‡āļ‹āļ·āđ‰āļ­āļĨāļ‡ DynamoDB āļˆāļēāļāļ™āļąāđ‰āļ™āļŠāđˆāļ‡ Event āđ„āļ›āļĒāļąāļ‡ SNS āđ€āļžāļ·āđˆāļ­āđāļˆāđ‰āļ‡ Payment Service

// orderService.js
const AWS = require("aws-sdk");
const dynamo = new AWS.DynamoDB.DocumentClient();
const sns = new AWS.SNS();

exports.handler = async (event) => {
  const order = JSON.parse(event.body);
  order.status = "PENDING";
  order.id = Date.now().toString();

  await dynamo.put({
    TableName: "Orders",
    Item: order
  }).promise();

  await sns.publish({
    TopicArn: process.env.PAYMENT_TOPIC_ARN,
    Message: JSON.stringify(order)
  }).promise();

  return {
    statusCode: 200,
    body: JSON.stringify({ message: "Order created", order })
  };
};
    

4. Payment Service (SQS + Lambda + DynamoDB)

Payment Service āļˆāļ°āļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļēāļāļ„āļīāļ§ SQS āļ—āļĩāđˆāļŠāđˆāļ‡āļĄāļēāļˆāļēāļ SNS āđāļĨāļ°āļˆāļģāļĨāļ­āļ‡āļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™ āđ€āļŠāđˆāļ™ āļœāđˆāļēāļ™ Payment Gateway āļ āļēāļĒāļ™āļ­āļ

// paymentService.js
const AWS = require("aws-sdk");
const dynamo = new AWS.DynamoDB.DocumentClient();
const sns = new AWS.SNS();

exports.handler = async (event) => {
  for (const record of event.Records) {
    const order = JSON.parse(record.body);
    order.status = "PAID";

    await dynamo.update({
      TableName: "Orders",
      Key: { id: order.id },
      UpdateExpression: "set #s = :s",
      ExpressionAttributeNames: { "#s": "status" },
      ExpressionAttributeValues: { ":s": "PAID" }
    }).promise();

    await sns.publish({
      TopicArn: process.env.NOTIFICATION_TOPIC_ARN,
      Message: JSON.stringify({ orderId: order.id, status: order.status })
    }).promise();
  }
};
    

5. Notification Service (SNS + Lambda + SES)

āđ€āļĄāļ·āđˆāļ­ Payment āļŠāļģāđ€āļĢāđ‡āļˆ āļĢāļ°āļšāļš Notification āļˆāļ°āļĢāļąāļš Event āļˆāļēāļ SNS āđāļĨāđ‰āļ§āļŠāđˆāļ‡āļ­āļĩāđ€āļĄāļĨāđāļˆāđ‰āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļœāđˆāļēāļ™ AWS SES

// notificationService.js
const AWS = require("aws-sdk");
const ses = new AWS.SES();

exports.handler = async (event) => {
  for (const record of event.Records) {
    const msg = JSON.parse(record.Sns.Message);

    await ses.sendEmail({
      Destination: { ToAddresses: ["[email protected]"] },
      Message: {
        Subject: { Data: `Order ${msg.orderId} confirmed` },
        Body: { Text: { Data: `Your payment is ${msg.status}` } }
      },
      Source: "[email protected]"
    }).promise();
  }
};
    

6. āļāļēāļĢāđƒāļŠāđ‰ SNS + SQS āļŠāļģāļŦāļĢāļąāļš Event-driven Communication

SNS āļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ Publisher āļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđāļˆāđ‰āļ‡ Event āđ„āļ›āļĒāļąāļ‡āļŦāļĨāļēāļĒāļšāļĢāļīāļāļēāļĢ āļŠāđˆāļ§āļ™ SQS āđ€āļ›āđ‡āļ™āļ„āļīāļ§āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđ€āļāđ‡āļš Event āļŠāļąāđˆāļ§āļ„āļĢāļēāļ§āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļŠāļđāļāļŦāļēāļĒāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ āļĢāļ°āļšāļšāļ™āļĩāđ‰āļˆāļķāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđāļšāļš Asynchronous āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

7. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒ CloudWatch

āđƒāļŠāđ‰ Amazon CloudWatch āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš Logs, Metrics āđāļĨāļ° Alarm āļ‚āļ­āļ‡ Lambda āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāļ§āđˆāļēāļĢāļ°āļšāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđāļĨāļ°āđ„āļĄāđˆāļĄāļĩ Error āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™

8. āļ‚āđ‰āļ­āļ”āļĩāļ‚āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰ Microservice āļšāļ™ AWS

  • ✅ āļ‚āļĒāļēāļĒāļĢāļ°āļšāļšāđ„āļ”āđ‰āļ‡āđˆāļēāļĒ (Scalable)
  • ✅ āļĢāļ°āļšāļšāđ„āļĄāđˆāļĨāđˆāļĄāļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ” (Isolated Failure)
  • ✅ āļžāļąāļ’āļ™āļēāđāļĨāļ° Deploy āđāļĒāļāļŠāđˆāļ§āļ™āđ„āļ”āđ‰āļ­āļīāļŠāļĢāļ°
  • ✅ āđƒāļŠāđ‰āļˆāđˆāļēāļĒāļ•āļēāļĄāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡ (Pay-as-you-go)

9. āļŠāļĢāļļāļ›āļ āļēāļžāļĢāļ§āļĄāļāļēāļĢāļ—āļģāļ‡āļēāļ™

āļˆāļēāļ Case Study āļ™āļĩāđ‰ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļš E-commerce āļ‚āļ™āļēāļ”āđ€āļĨāđ‡āļāđāļ•āđˆāļ—āļĢāļ‡āļžāļĨāļąāļ‡āļšāļ™ AWS āđ„āļ”āđ‰ āđ‚āļ”āļĒāđƒāļŠāđ‰āļšāļĢāļīāļāļēāļĢāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđāļĨāđ‰āļ§āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļŠāļĢāđ‰āļēāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļ­āļ‡āđ€āļĨāļĒāđāļĄāđ‰āđāļ•āđˆāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđ€āļ”āļĩāļĒāļ§

ðŸ§Đ āđ€āļ‚āļĩāļĒāļ™āđ‚āļ”āļĒ King Pool

āļ āļēāļžāļ›āļĢāļ°āļāļ­āļš: Order, Payment, Notification, SNS, SQS, Lambda

āļ­āđˆāļēāļ™āļ•āđˆāļ­: āļāļēāļĢ Integrate āļĢāļ°āļšāļš Machine Learning āļ”āđ‰āļ§āļĒ SageMaker āđāļĨāļ° Bedrock

Leave a Reply

āļ­āļĩāđ€āļĄāļĨāļ‚āļ­āļ‡āļ„āļļāļ“āļˆāļ°āđ„āļĄāđˆāđāļŠāļ”āļ‡āđƒāļŦāđ‰āļ„āļ™āļ­āļ·āđˆāļ™āđ€āļŦāđ‡āļ™ āļŠāđˆāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļģāđ€āļ›āđ‡āļ™āļ–āļđāļāļ—āļģāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒ *