why not

Dutch pay 서비스에서 이용할 기술셋 1 (22일차) 본문

Today I Learn/환급 챌린지

Dutch pay 서비스에서 이용할 기술셋 1 (22일차)

novem 2023. 3. 13. 09:54

<AWS Amplify>

1. AWS Amplify란?

  • 모바일/웹 어플리케이션을 빠르게 구성+빌드+배포+운영까지 서비스의 모든 라이프사이클을 한 곳에서 관리할 수 있도록 통합해둔 AWS에서 만든 풀스택 개발 통합 솔루션 서비스

2. 둘러보기

  • Admin UI 제공
    • App setting 메뉴
      • 도메인 관리 페이지
      • 웹앱과 앱을 빌딩할 때 환경 변수 설정
      • 접근 권한자 설정
      • 서비스 모니터링
      • 배포 모니터링
  • Connect branch
    • 깃허브가 연결 된 특정 branch에 push가 되거나, 새로운 커밋이 올라오게 되면 빌드, 배포 및 배포된 버젼을 검증하는 것을 자동으로 수행함
  • AWS 서비스와의 연동이 간편하다.
    • 인증(Cognito서비스와 연동) - 로그인, 회원가입, 추가 인증 등을 지원하는 서비스
    • 서비스 모니터링/로깅(CloudWatch 서비스와 연동)
    • 데이터베이스(DynamoDB, Aurora, GraphQL 지원)
    • 앱 푸시 알림(PinPoint서비스와 연동)
  • CLI(Command Line Interface)으로 할 수 있는 것들이 매우 많다는 것이 큰 장점이다.
    • 프론트엔드 초기 프로젝트 셋업 (React, Vue, Angular, Next.js 등을 지원함)
    • 백엔드 프로젝트 셋업 (node.js 지원함)
      • DB 스키마 설정
        • 연동 할 지
        • 어떤 DB 사용할 건지
        • 스키마 설정 어떻게 할 지 등등 물어봄
      • RESTful API 기본 코드셋으로 제공함
      • DB와의 연동도 이미 되어 있음
    • 배포
      • 커맨드 하나면 배포 완료
    • 웹 호스팅 추가
      • 별도로 웹 서버 셋팅을 요구하지 않는다.
      • 커맨드 하나면 호스팅 추가가 가능하다.
      • 뒷 단의 웹 서버 관리는 AWS가 알아서 해준다.
  • 서비스 배포
    • 배포 모니터링, 로깅이 잘 되어있어, 배포가 실패할 경우 왜 실패 했는지 디버깅 하기 용이하다.
      • Admin UI에서 확인 가능
    • Github과 연동할 수 있어, main 브랜치에 푸시하는 것으로 배포 프로세스 시작이 가능하다.
  • 프론트엔드와 백엔드 코드를 한 레포지터리 내에서 관리 가능하다.
    • 그럼에도 백엔드와 프론트엔드의 배포를 분리해서도 가능
  • 디자인 툴 Figma와 연동하여 Figma 내 디자이너들이 작업한 컴포넌트를 리액트 컴포넌트화 할 수 있음
  • AWS가 제공하는 CloudFormation을 이용한 인프라 관리
    • Infrastructure as code 서비스의 한 종류
      • Infrastructure as code란?
        • 한 서비스를 운영하기 위해 필요한 인프라 리소스(서버, 데이터베이스 등)을 코드화 해놓은 것을 의미
        • 매 배포시 마다 배포를 중개하는 서비스에서 해당 파일을 읽어들여 해당 코드 대로 인프라를 구성함
    • AWS resource를 관리하기 위한 template file
// template file 예시

{
  "Description": "DynamoDB resource",
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "partitionKeyName": {
      "Type": "String"
    },
    "partitionKeyType": {
      "Type": "String"
    },
    "env": {
      "Type": "String"
    },
    "tableName": {
      "Type": "String"
    }
  },
  "Resources": {
    "DynamoDBTable": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "guid",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "guid",
            "AttributeType": "S"
          }
        ],
        "GlobalSecondaryIndexes": [],
        "ProvisionedThroughput": {
          "ReadCapacityUnits": 5,
          "WriteCapacityUnits": 5
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_IMAGE"
        },
        "TableName": {
          "Fn::If": [
            "ShouldNotCreateEnvResources",
            {
              "Ref": "tableName"
            },
            {
              "Fn::Join": [
                "",
                [
                  {
                    "Ref": "tableName"
                  },
                  "-",
                  {
                    "Ref": "env"
                  }
                ]
              ]
            }
          ]
        }
      }
    }
  },
  "Outputs": {
    "Name": {
      "Value": {
        "Ref": "DynamoDBTable"
      }
    },
    "Arn": {
      "Value": {
        "Fn::GetAtt": [
          "DynamoDBTable",
          "Arn"
        ]
      }
    },
    "StreamArn": {
      "Value": {
        "Fn::GetAtt": [
          "DynamoDBTable",
          "StreamArn"
        ]
      }
    },
    "PartitionKeyName": {
      "Value": {
        "Ref": "partitionKeyName"
      }
    },
    "PartitionKeyType": {
      "Value": {
        "Ref": "partitionKeyType"
      }
    },
    "Region": {
      "Value": {
        "Ref": "AWS::Region"
      }
    }
  }
}

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

* 필수 삽입 링크 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr