현대 웹 응용 프로그램 구축

무엇이 당신의 웹 응용 프로그램을 현대화시켰습니까?


이를 현대 웹 응용 프로그램이라고 부르려면 여러 가지를 고려해야 한다.나에게 있어서 가장 중요한 것은 응용 프로그램이 새 문서를 불러오지 않는 상황에서 자신의 내용을 동적으로 변경할 수 있고, 대량의 간헐적인 데이터 변화를 처리하여 수요를 만족시킬 수 있다는 것이다.
현대 응용 프로그램은 클라우드를 이용하여 높은 가용성과 확장성을 실현한다. 이런 응용 프로그램은 업무 논리를 격리하고 재사용과 교체를 최적화하며 가능한 한 관리 비용을 제거한다.예를 들어 AWS 클라우드에는 인프라 유지보수 작업을 자동화하는 동시에 코드 작성에 전념할 수 있는 서비스가 많습니다.

정적 사이트 만들기


내가 전에 말했듯이 웹 응용 프로그램의 가장 중요한 부분은 동적이다. (걱정하지 마라. 우리는 실현할 것이다.) 사이트의 일부분은 고정적이라는 것도 부인할 수 없다.
정적 콘텐츠를 처리하는 가장 좋고 저렴한 서비스는 AWS CloudFront와 AWS S3이다.
AWS S3 bucket을 만들고 모든 정적 웹 콘텐츠(예: html, css, JS, 미디어 등)를 업로드합니다.전 세계 각지의 여러 변두리에서 이 내용을 전달할 수 있도록 CloudFront 발행판을 설정할 것입니다.
안전을 위해서, 나는 클라우드 Front 원본 접근 표지 (OAI) 를 만들고, 이 표지는 우리의 S3 메모리 통에만 읽기 접근할 수 있음을 설명하는 S3 메모리 통 정책을 만들 것이다.저는 AWS 인증서 관리자를 사용하여 HTTPS를 통해 콘텐츠를 전달할 수 있도록 저희 사이트에 인증서를 제공할 것입니다.
또한 AWS Route53에서 Google 사이트의 FQDN에 도메인을 등록하고 Google CloudFront 릴리스를 가리키는 기록을 만들 수 있습니다.

동적 사이트를 만들다


여기서, 나는 네트워크 부하 평형기 뒤의 용기에 Flask 프로그램을 만들 것이다.이것들은 우리의 전방 사이트를 더욱 상호작용적으로 할 것이다. 그래, 네가 읽은 것이 맞고 활력이 넘칠 것이다.
여기서 AWS 탄력용기 서비스(ECS)와 Fargate의 배치 옵션을 사용하면 서버를 관리하지 않고 용기를 배치할 수 있습니다.
프로그램 의존 항목을 사용하여 docker 파일에서 docker 이미지를 구축하고 AWS Elastic Container Repository (ECR) 로 이미지를 전송하면 로컬에서 docker 이미지를 실행해서 문제를 해결할 수 있습니다.
docker 이미지를 ECR로 전송한 후, 용기가 실행될 위치 (서브넷) 를 놓고 필요한 자원과 설정을 설정할 수 있도록 ECS 집단, 서비스, 작업 정의를 만듭니다.
그리고 네트워크 부하 평형기를 만들고 탐지기를 목표 그룹에 설정하면, 목표 그룹은 데이터를 용기에 전송합니다.
여기서 AWS API 게이트웨이를 생성하여 내부 로드 밸런서에서 트래픽을 에이전트합니다.이를 위해 우리는 API 게이트웨이와 통신할 수 있도록 VPC 내의 부하 균형기에 VPC 단점을 제공할 것이다.

CI/CD 파이핑 구축


docker 이미지를 자동으로 구축하고 배포할 수 있도록 프로그램에 연속 통합/연속 배포 (CI/CD) 를 통합합니다.개발 속도를 높이는 것은 매우 좋은 방법이다. 우리는 매번 응용 프로그램에 대해 약간의 변경이 필요할 때마다 같은 절차를 실행하지 않는다.
먼저, AWS CodeCommit 저장소를 만들고, 그 안에 코드를 저장한 다음, 파이프에 구축된 모든 CI/CD 부품을 저장하는 부품 저장통을 만듭니다.
이 서비스를 계속 사용하면 파이프 코드 구축의 대부분 작업을 완성할 것입니다. 이 서비스는 제공된 설정을 사용하여 서버를 구축하고, docker 이미지를 구축하는 데 필요한 절차를 수행하며, 새 버전마다 ECR로 전송합니다.
마지막으로 코드 변경 사항을 CodeCommit 저장소에서 푸시할 때 자동으로 생성될 수 있도록 파이프라인을 배치한 다음 CodeBuild 프로젝트를 사용하여 생성된 최신 코드를 ECR에 전달하도록 설정합니다. 이 모든 코드는 CodePipeline을 사용하여 배열됩니다.
이 때, 구축에 문제가 있으면, 서비스마다 부여된 신분 접근 관리 (IAM) 역할을 확인하고, 클라우드 워치 로그를 확인하십시오.

데이터 저장


DynamoDB 테이블을 만들어서 데이터를 저장할 것입니다.
표를 만드는 동시에, 우리는 옵션을 효율적으로 선택할 수 있도록 2단계 인덱스를 만들어야 한다.
마찬가지로, Google 용기에 DynamoDB와 통신할 수 있도록 VPC 포트를 만들 것입니다. 공공 네트워크를 통과하지 않아도 됩니다.

사용자 등록


사용자 등록은 우리가 우리의 사이트 기능 방문을 조정하는 데 도움을 줄 것이다.분명히 인증을 받은 사용자는 인증을 받지 않은 사용자보다 더 많은 기능을 가지게 될 것이다.
AWS Cognito 를 만들어 이 서비스를 사용하면 사용자가 데이터베이스에 영향을 미칠 수 있는 일을 하기 전에 인증을 요구할 수 있습니다.
Google은 가입이 완료되기 전에 사용자가 자신의 이메일 주소를 확인하도록 Cognito를 설정합니다.
마찬가지로 인증된 사용자에 대한 권한 부여 작업을 위해 API 게이트웨이를 설정합니다.

사용자 비헤이비어 캡처


이를 통해 우리는 사용자가 우리 사이트에서 실행하는 조작(예를 들어 사용자 클릭 등)을 이해할 수 있다.이것은 우리가 미래에 더 좋은 사용자 체험을 제공할 수 있도록 우리의 사이트를 효율적으로 설계하는 데 도움을 줄 것이다.
사용자의 행동을 이해하기 위해 AWS Kinesis Firehose를 사용하면 데이터를 수신할 수 있고 여러 개의 저장 목적지에 저장할 수 있습니다. 이를 위해 우리는 수신한 데이터를 S3(예를 들어 S3, Elastic Search, Red Shift 등)에 저장할 것입니다.
우리는 Kinesis 소방 호스에 대한 요청을 추출하기 위해 API 게이트웨이를 다시 사용할 것이다.
웹 사이트의 상호작용을 받을 때, 우리는 AWS Lambda를 사용하여 이 데이터를 더욱 처리할 것이다.

도중에 겪은 문제

  • 부두 일꾼 속도 제한
  • 이로 인해 구문이 여러 번 실패했습니다. CloudWatch 로그를 검토할 때 오류가 발생했습니다.
    toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
    
    나는 이것이 Docker Pull Rate 제한으로 인해 일어난 것이라고 발견했다.Docker, Inc.는 2020년 11월 2일에 이 금리 제한을 발표했다.
    자세한 내용은 Docker에서 this blog을 참조하십시오.
    솔루션
    Here은 제가 사용하는 솔루션입니다.
  • 구축 공간 부족
  • dockerfile을 특정 Linux 버전으로 업데이트했는데, 이미지를 구축하려고 했을 때 오류가 발생했습니다.
    Docker error : no space left on device
    
    솔루션docker prune -all전반적으로 말하면 다음은 모든 관련 마이크로 서비스가 서로 통합된 설명도이다.

    최종 출력: Mythical Mysfits
    익숙해 보여요?맞아요!아마존 웹 서비스 세미나.자세한 내용은 here을 참조하십시오.나는 응용 프로그램을 더욱 효율적이고 가용성을 높일 수 있도록 몇 가지 절차와 통합 서비스를 추가했다.
    너는 나에게 연락할 수 있다.

    좋은 웹페이지 즐겨찾기