Code States 136

Final Project - 마라톤 대회 결과 기록 시스템, 마라마라톤!

프로젝트 개요 개인 사용자와 대회 주최자를 위한 마라톤 대회 결과 기록 시스템 유저 데이터를 저장하고 있는 데이터베이스는 다른 데이터베이스와 분리되어 있음 기록 데이터를 기반으로 사용자별 점수를 기록하는 시스템은 데이터 유실을 막기 위해 SQS를 사용하여 느슨하게 결합됨 각 유저는 로그인 기능을 통해 유저 타입에 따른 토큰을 발급받으며, 해당 토큰을 기반으로 메인 서버에 대한 CRUD 요청이 동작함 요구사항 분석 인프라 요구사항 시스템 전반에 가용성, 내결함성, 확장성, 보안성이 고려된 서비스들이 포함되어야 합니다. 하나 이상의 컴퓨팅 유닛에 대한 CI/CD 파이프라인이 구성되어야합니다. Github Action을 이용하여 CI/CD 파이프라인 구성 유저 데이터를 저장하고 있는 유저 데이터베이스는 다른 ..

Code States/회고 2023.06.28

[0623] jwt 토큰을 이용한 유저 타입에 따른 crud api 분리

사용한 함수 트러블슈팅 if문 조건에 사용시 변수가 undefined로 인식되는 현상 발생 jwt 토큰 값을 decode해서 나온 값이 console.log로 출력했을 때는 정상적으로 나오나, if(user_type == 1)처럼 if문 안에 조건으로 사용했을 시에는 undefined로 인식되는 현상이 발생했다 변수 앞에 decoded.을 붙여서 해결 유저 타입에 따라 작동되는 예시

Code States/TIL 2023.06.23

[0622] jwt를 이용한 로그인 시스템 구현

user 서버에 로그인 요청 -> user db에서 ID/Password 대조 후 일치하는 사용자면 토큰 생성 -> 응답으로 유저에게 토큰 반납 프론트엔드가 없으므로, main 서버에 api 요청시 헤더에 수동으로 토큰값 입력 -> main 서버에서 토큰 검증 jwt 토큰을 생성하기 위한 함수 생성 로그인 로직 구현 바디에 ID/Password를 담아서 요청시 DB에 일치하는 유저가 있는지 확인 user_id와 user_type을 담은 토큰 생성 로그인 및 토큰 생성 구현 완료 헤더에 포함된 토큰을 검증하는 로직 구현 트러블슈팅 [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 서버가 2개 이상의 응답을 보내려할때 ..

Code States/TIL 2023.06.22

[0621] EC2를 이용한 Grafana 구축

ec2 생성 ssh를 통해 ec2 접속 도커 설치 후 컨테이너로 Grafana 실행 ec2 퍼블릭 주소 :3000 포트로 접속 가능 데이터 소스로 클라우드 워치 설정, AWS 접근 키 설정 Dashboard 생성 추출하고자 하는 데이터의 값을 입력 옵션 설정 후 임포트 같은 방식으로 필요한 소스들을 임포트 각 소스에 따라 모니터링 화면을 볼 수 있음 표시된 부분을 통해 클러스터나 서비스, 테이블명 등 설정 가능 커스텀하여 필요한 모니터링 소스들을 한 화면에 보이도록 만든 대시보드

Code States/TIL 2023.06.22

[0621] VPC 생성 및 서브넷 구현

VPC 생성 새로 생성한 VPC에 기존에 만들었던 서비스들 이동(새로 생성) 프라이빗 서브넷에 접근하기 위해 람다함수 권한 추가 { "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaBasicExecution", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Sid": "LambdaVPCAccess", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterfa..

Code States/TIL 2023.06.21

[0620] Github Action을 이용한 Lambda 함수 자동화

ECR을 이용해서 도커 이미지를 람다로 배포하려했으나 오류로 실패.. 우선은 zip 파일을 업로드하는 것으로 변경 github action을 위한 yml 파일 작성 name: Deploy Lambda Function on: release: workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source code uses: actions/checkout@master - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-..

Code States/TIL 2023.06.21

[0619] Secrets Manager 사용하여 ecs 환경변수 설정

시크릿 매니저에서 환경변수 생성 확인을 위한 코드 작성 새 태스크 정의 개정 생성 환경변수 입력 태스크 역할 설정 시크릿 어세스 폴리시 권한 부여해야 함 트러블슈팅 특정 환경변수 값을 불러오는 것이 아닌 시크릿매니저에 입력된 모든 값을 불러옴 태스크 정의에서 시크릿 매니저의 arn을 입력할 때 뒷부분에 변수명을 붙여줘야 함 해결 엔드포인트를 통해 디비에 접근도 정상적으로 되는 것을 확인할 수 있음 같은 방법을 mysql에 대해서도 진행

Code States/TIL 2023.06.19

[0618] Github Action을 통한 ECR ECS 자동화

Github Action을 위한 yml 파일 작성 8~14번 라인 환경변수 설정 50번 라인 맨 끝 폴더명 설정 깃허브 레포지토리에서 환경변수 설정 name: Publish Docker Image and Deploy to Amazon ECS on: push: branches: [ "main" ] env: AWS_REGION: ap-northeast-2 # set this to your preferred AWS region, e.g. us-west-1 ECR_REPOSITORY: test # set this to your Amazon ECR repository name ECS_SERVICE: test_service # set this to your Amazon ECS service name ECS_CLUS..

Code States/TIL 2023.06.18