압살자 모드로 너의 전자상거래 거석을 깨뜨리다

22452 단어 microserviceswebdev
Shopify, Oracle ATGBigCommerce와 같은 단일 플랫폼은 설치 및 운영이 용이합니다.그러나 플랫폼별 제한에 따라 사용자를 고정시킵니다.따라서 모든 플랫폼의 제한을 받으면'일률적인'소프트웨어를 사용하는 것이 어렵다고 느낄 수 있습니다.
만약 네가 자신의 전자상거래 거두를 세웠다면, 너도 비슷한 도전에 직면하게 될 것이다.프로그램의 더 많은 구성 요소가 한데 얽혀 있을 때, 기능 수정, 구성 요소 축소, 구분 작업은 더욱 어려워진다.그 중 한 시스템을 사용한 지 여러 해가 지난 후에 기술 채무가 끊임없이 누적되어 변혁을 실시하기 어렵다.
마이크로 서비스가 이런 문제들을 해결했다.너는 너의 전자상거래 업무를 모듈화할 수 있다.고객과의 접촉에 신속하게 적응하는 대량의 새로운 기회는 일종의 경쟁 우위이다.이것이 바로 Netflix, Amazon, and Etsy와 같은 현대 과학 기술 회사들이 모두 마이크로 서비스로 전환한 이유다.
단일 서비스에서 마이크로 서비스로의 이전은 많은 기술과 업무 도전을 가져왔다.strangler pattern는 당신의 거대한 돌을 대체하는 데 도움이 되는 방법입니다.그것은 한 번에 하나의 서비스만 제공한다.
이 글에서, 당신은 전자상거래의 모든 부분을 분리되고 확장 가능한 마이크로 서비스로 대체할 때까지 압살 모델을 어떻게 사용하는지 배울 것이다.

왜 마이크로 서비스예요?


마이크로서비스는 단일 접근 방식에 비해 다음과 같은 몇 가지 이점을 제공합니다.

기술 유연성

  • 일률적인 플랫폼은 당신이 처음 시작할 때 빠르고 편리하지만 업무가 발전함에 따라 문제가 발생하기 시작한다.
  • 마이크로 서비스를 사용하면 응용 프로그램의 각 부분에 가장 적합한 프로그래밍 언어와 제3자 서비스를 자유롭게 실현할 수 있습니다.
    확장성과 모듈화를 갖추고 있기 때문에 결정에 얽매이지 않습니다.
  • 융통성

  • 마이크로 서비스는 독립적이고 전단과 결합하지 않는다.이것은 매번 바퀴를 재발명할 필요가 없이 고객과 쉽게 새로운 방식으로 연락할 수 있다는 것을 의미한다.
  • 귀하의 서비스를 사용하면 모든 서비스가 귀하의 요구에 부합되고 데이터 형식과 기능을 정의할 수 있습니다.사용자가 액세스하는 구조를 제어할 수도 있습니다.
    유연성은 병목을 방지할 수 있습니다. 왜냐하면 당신의 팀 간에 서로 의존하지 않기 때문입니다.
  • 의존했어 보안

  • 공격자는 를 통해 귀하의 단일 플랫폼을 방문할 수 있습니다. 일반적으로 모든 정보인 고객, 제품과 주문 데이터에 접근할 수 있습니다.마이크로 서비스는 서비스 사이에 수직갱을 만들어서 그것들을 더욱 안전하게 할 수 있다.
  • 들어가다 표현

  • 트래픽이 많은 서비스에 리소스를 동적으로 중앙 집중화하는 확장성과 기능을 통해 성능을 향상시킬 수 있습니다.
    예를 들어 백스마트는 디렉터리 API 를 24시간에서 15분 이하로 높였다.
  • 동기화 시간 무엇이 졸라 죽이는 모드입니까?


    '압살자'문양의 이름은 그루의 나무에서 유래했다.트리와 마찬가지로 기존 프로그램을 기반으로 합니다.그 다음에 특정한 요소를 대체하기 위해 새로운 서비스를 구축합니다.완료되면 응용 프로그램의 이전 부분을 종료합니다.
    너는 새로운 마이크로 서비스가 너의 전체 전체를 대체할 때까지 계속해서 이 서비스를 계속할 것이다.너는 오래된 코드를 말살했기 때문에 완전히 버릴 수 있다.
    지원 strangler fig:

  • 기존 서비스의 새 버전을 만들어서 프로그램을 변환합니다.

  • 증가하는 마이크로 서비스 옆에 실행되는 오래된 응용 프로그램과 공존합니다.

  • 새로운 서비스가 낡은 시스템을 완전히 대체할 때 낡은 시스템을 제거한다.
  • 말살자의 생명주기의 3단계 말살자와 폭포법


    말살 모델을 제외하고 폭포 교체 모델도 있는데 이것은 마이크로 서비스를 이전하는 더욱 흔한 방법이다.폭포 모델은 당신이 긴 개발과 배치 주기 에 힘써야 합니다.
    폭포법increases the risk of bugs and lowers your velocity은 시간이 걸릴 수 있지만, 더욱 유연한 압살법을 사용하면 6개월 또는 더 짧은 시간 안에 진전을 이룰 수 있다.이것은 자연히 업무를 실현 가능한 목표로 나누는데 이것은 well over a year to deliver results 가시적인 결과를 가져올 수 있는 임무를 완성한다는 것을 의미한다.
    strangler 모드를 사용하면 모든 새로운 마이크로 서비스가 완성된 후에 바로 사용할 수 있습니다.새로운 시스템을 세울 필요가 없다.developers are motivated 매달 변경 사항을 발표한다.우선, 너는 이런 우세를 빨리 누릴 수 있다.그 다음으로 개발자를 다음 프로젝트에 진입시킬 수도 있다.만약 문제가 발생한다면, 그것들은 전체 시스템보다 시스템의 각 부분을 더욱 쉽게 굴러갈 수 있다.
    말살자 패턴은 보통 더 좋은 선택이다.또한 위험성이 낮은 관리 방식으로 인프라의 모든 부분을 단계적으로 마이그레이션하고 비즈니스 가치를 더욱 빠르게 제공할 수 있습니다.

    어떤 사람이 건의하다 말살자 모드의 결점


    여기에 약간의 경고가 있다.전체 애플리케이션을 마이그레이션하는 데 시간이 걸립니다.사용 압살자 모델 분석 은 일치성을 유지하고 관리팀이 장기 프로젝트에 주력하도록 확보하는 것을 권장한다.
    마이크로 서비스는 안정적인 개발 실천(예를 들어 지속적인 통합과 배치)과 그들을 잘 아는 엔지니어 덕분이다.적당한 팀을 찾는 것은 적당한 언어와 구조를 선택하는 것과 마찬가지로 중요하다.중요한 것은 개발자가 새로운 절차를 지원할 수 있도록 확보하는 것이다.만약 그들이 이러한 변화의 장점을 이해한다면successful projects.
    마이크로서비스로 이전하는 위험을 줄이는 방법은 사용buy-in will be higher이다.저희는 마이크로 서비스에fabric를 구축하여 귀하의 팀과 협력하여 순조로운 이전을 확보할 수 있습니다.

    패브릭 같은 성숙한 전자상거래 플랫폼 예: E-Business에서 억제 모드 사용


    말살자 모델을 어떻게 실현하는지 봅시다.나는 monolith가 제공하는 요금 계산 서비스 기능을 사용해서 새로운 마이크로 서비스로 이동했다.그리고 기존 애플리케이션을 손상시키지 않고 중요한 데이터와 기능을 마이그레이션하는 방법을 보여 드리겠습니다.

    1단계: 마이그레이션 시작 위치 결정


    당신이 선택한 서비스는 당신의 수요와 당신이 사용하는 플랫폼에 달려 있습니다.두 가지 흔히 볼 수 있는 방법이 있다.

  • 업그레이드가 필요한 관건적인 기능: 남겨진 코드 라이브러리를 업데이트할 수 없거나 고객이 대가를 치르는 성능 문제 (예를 들어 결제 속도가 느린 것) 에 직면하게 되면 여기서부터 가장 좋은 선택이 될 수 있습니다.배치하기 전에 모든 것이 방수되는 것을 확보하세요.이것은 더 많은 시간을 필요로 하지만, 영향은 더욱 크다.

  • 그다지 중요하지 않은 것을 선택해서 이 과정을 테스트해라. 만약 개발자가 처음으로 마이크로 서비스를 실현한다면, 이것은 위험이 적기 때문에 좋은 생각이다.그러나 이것은 업무의 가치를 떨어뜨릴 것이다.
  • 전자상거래 청구서 주소 서비스를 갑골문 ATG와 같은 단일 플랫폼에서 AWS에서 위탁 관리하는 마이크로 서비스로 옮기는 것을 살펴본다.느리거나 오류가 발생하기 쉬운 요금 계산 서비스는 고객으로부터 수익을 얻는 데 방해가 될 수 있습니다.그래서 그들은 인터넷 상점에서 왕왕 매우 중요하다.
    나는 단지 몇 개의 속성만 포함할 것이지만, 당신은 필요한 모든 데이터로 이 통용 모델을 복제할 수 있습니다.

    2단계: 중간 레이어 구성


    API 게이트웨이는 서비스 호출을 관리하고 기존 전체 또는 새 서비스에 필터링할 수 있습니다.AWS에는 이를 수행하는 방법에 대한 내용이 포함됩니다 .Aa guide는 서비스 간의 데이터 흐름을 관리하기 위해 부하 균형과 루트에도 사용할 수 있다.
    service mesh
    중간 계층이 있으면 신구 서비스를 원활하게 전환할 수 있습니다.이론적으로, 당신은 새로운 경로와 낡은 경로에 대해 A/B 테스트를 진행하거나, 이전 과정에서 문제가 발생했을 때 굴러갈 수도 있습니다.

    3단계: 새로운 서비스 구축 및 데이터 마이그레이션


    다음은 응용 프로그램의 오래된 요금 계산 부분을 새로운 마이크로 서비스로 대체합니다.다음은 EC2와 Docker를 사용하여 Chargeback 마이크로서비스를 배포하는 Amazon 의 예제를 기반으로 한 코드입니다.
    이 작업 정의는 Oracle ATGAWS documentation를 대체하기 위해 AWS에서 실행되는 새 Docker 컨테이너를 만듭니다.
    
    {
        "containerDefinitions": [
            {
                "name": "[billing-address-service]",
                "image": "[account-id].dkr.ecr.[region].amazonaws.com/[service-name]:[tag]",
                "memoryReservation": "256",
                "cpu": "256",
                "essential": true,
                "portMappings": [
                    {
                        "hostPort": "0",
                        "containerPort": "3000",
                        "protocol": "tcp"
                    }
                ]
            }
        ],
        "volumes": [],
        "networkMode": "bridge",
        "placementConstraints": [],
        "family": "[billing-address-service]"
    }
    
    
    대부분의 경우, 당신은 데이터를 기존의monolith 데이터베이스에서 새로운 마이크로서비스 백엔드 데이터베이스로 전송해야 합니다.
    예를 들어, 위에서 설명한 Oracle ATG 청구 주소 서비스는 구성 파일 데이터를 사용합니다.다음과 같이 Oracle 애플리케이션 백엔드에서 AWS로 복제할 수 있습니다.
    이 예제 코드는 Amazon SQS를 사용하여 일련의 데이터 전송 작업을 대기열에 추가합니다.대량의 데이터를 이동하려면 이 점이 중요하다.이 과정은 시간이 오래 걸릴 수 있기 때문에, 실패한 전송이 전체 과정을 파괴하는 것을 원하지 않습니다.
    
    const { SQSClient, SendMessageCommand } = require("@aws-sdk/client-sqs");
    
    const REGION = "us-west-1"; //replace with your region
    
    const params = {
    
    DelaySeconds: 12,
      MessageAttributes: { // add other fields if you need them, remove what you don’t.
        profileId: {
          DataType: "Number",
          StringValue: "543",
        },
        address: {
          DataType: "String",
          StringValue: "29 Acacia Road, Springfield",
        },
      },
      MessageBody:
        "Clothing Store Product Data.",
    
      QueueUrl: "SQS_QUEUE_URL", // your queue URL
    
    }
    
    const sqs = new SQSClient({ region: REGION});
    
    const run = async () => {
      try {
        const data = await sqs.send(new SendMessageCommand(params));
        console.log("Success, product sent. MessageID:", data.MessageId);
      } catch (err) {
        console.log("Error", err);
      }
    };
    run();
    
    
    줄마다 줄을 서면 데이터를 수신하고 처리하는 서비스가 필요합니다.이것은 모든 줄을 새 데이터베이스에 추가하고 메시지를 성공적으로 처리할 때 대기열에서 메시지를 삭제합니다.
    import  { SQSClient } from "@aws-sdk/client-sqs";
    
    const REGION = "us-west-1"; //replace with your region
    
    const sqsClient = new SQSClient({ region: REGION });
    export  { sqsClient };
    
    import {
      ReceiveMessageCommand,
      DeleteMessageCommand,
    } from  "@aws-sdk/client-sqs";
    import { sqsClient } from  "./libs/sqsClient.js";
    
    // Set the parameters
    const queueURL = "SQS_QUEUE_URL"; //Your queue URL
    
    const params = {
      AttributeNames: ["SentTimestamp"],
      MaxNumberOfMessages: 10,
      MessageAttributeNames: ["All"],
      QueueUrl: queueURL,
      VisibilityTimeout: 20,
      WaitTimeSeconds: 0,
    };
    
    const run = async () => {
      try {
        const data = await sqsClient.send(new ReceiveMessageCommand(params));
        if (data.Messages) {
          var deleteParams = {
            QueueUrl: queueURL,
            ReceiptHandle: data.Messages[0].ReceiptHandle,
          };
          try {
            // TODO: Save your data here
            database.save(data);
            // Then delete the queued message
            const data = await sqsClient.send(new DeleteMessageCommand(deleteParams));
            console.log("Message deleted", data);
          } catch (err) {
            console.log("Error", err);
          }
        } else {
          console.log("No messages to delete");
        }
        return data; // For unit tests.
      } catch (err) {
        console.log("Receive Error", err);
      }
    };
    run();
    
    일단 당신의 데이터가 새로운 마이크로 서비스로 전송되고, 그것이 정확하다는 것을 검증하면, 당신은 새로운 서비스를 테스트하기 시작할 수 있습니다.만일 모든 것이 정상이라면, 프로그램 전체를 종료하고, 프로그램의 모든 부분을 반복할 수 있습니다.
    이러한 마이그레이션 프로세스는 단일 전자 상거래 플랫폼에 따라 다릅니다.단, 이것은 응용 프로그램에서 압살기 모드를 어떻게 응용하는지 이해할 수 있기를 바랍니다.

    청구 주소 서비스 결론


    말살자 모델은 당신이 구조화되고 위험이 낮은 방식으로 유류 소프트웨어 플랫폼에서 벗어날 수 있도록 도와줄 수 있다.그것은 기존 전자상거래 상점을 파괴하지 않는 상황에서 의미 있는 개선을 신속하게 하는 데 도움이 된다.
    따라서 새로운 기능을 출시하고 플랫폼을 확장적이고 강력한 서비스로 바꾸어 전자상거래 업무의 핵심을 구성할 수 있습니다.마이크로 서비스의 결합 기능은 여러 채널에서 사용할 수 있도록 합니다.
    전체 마이그레이션을 피하려는 경우 도움을 받을 수 있습니다.업계 최고의 전자상거래 마이크로서비스 전문 지식을 바탕으로 그들은 귀하가 안전하고 확장 가능한 방법(예를 들어 strangler 모델)을 사용하여 그들의 전자상거래 마이크로서비스 세트로 이전하는 것을 도울 수 있습니다.

    좋은 웹페이지 즐겨찾기