모든 글 205

[AWS] aws 강의 섹션 28 (Step Function, AppSync, Amplify)

AWS Step Functions스텝 펑션은 특정 워크 플로우를 설계하고 해당 워크 플로우를 aws의 리소스와 연결시켜 자동으로 워크 플로우를 실행하도록 도와주는 도구다.한 워크플로우 당 한 개의 상태 관리 머신이 할당 될 수 있다.예시: 이미지 처리 워크플로우이미지를 S3에 업로드.업로드된 이미지를 Lambda로 처리 (크기 변경, 필터 적용 등).처리된 이미지를 S3에 저장.처리가 완료되었다는 알림을 사용자에게 보냄.이러한 워크 플로우를 정의하고 워크 플로우대로 리소스를 실행 시키도록 도와준다. Json으로 작성된다.워크 플로우를 시각화해서 시각적으로 수행이 어디까지 진행되는지 확인할 수 있다.스텝 펑션의 시작은 SDK 호출, API 게이트웨이, 이벤트 브릿지 등등으로 시작할 수 있다.Step Fun..

AWS 2024.12.05

[AWS] aws 강의 섹션 27 (Cognito User Pools, Cognito Identity Pools)

AWS Cognito자격 증명을 통해 사용자에게 여러 웹, 모바일 어플리케이션과 상호작용하게 하는 것이 목표다 사용자는 보통 AWS 계정 외부에 자리하고 있어서 이름이 cognito이다. 코그니토에는 두 가지 서비스가 있다. Cognito User Pools사용자를 위해 로그인 기능을 제공준다.api 게이트웨이, 로드밸런서와 통합이 잘 되어 있다.Cognito Identity Pools (Federated Identity)앱에 등록된 사용자가 aws 리소스에 바로 액세스할 수 있도록, 임시 AWS 자격 증명을 제공하는 것이다.사용자 풀과도 통합이 잘 되어 있다.Cognito User Pools (CUP)웹 및 모바일 애플리케이션 사용자들의 서버리스 데이터베이스를 생성할 수 있는 방법이다.아이디, 비밀번호..

AWS 2024.12.04

[AWS] aws 강의 섹션 26 (AWS Cloud Development Kit)

AWS Cloud Development Kit (CDK)자바 스크립트, 파이썬, 자바 등 익숙한 언어를 사용하여 클라우드 인프라를 정의할 수 있다.Cloud Fromation과 비슷하다고 생각할 수 있다.Cloud Formation은 Yaml을 이용해서 클라우드 인프라를 정의하기 때문이다.하지만 CDK는 프로그래밍 언어를 사용한다는 것에서 큰 차이점이 있다.고수준의 컴포넌트를 생성자를 통해서 생성할 수 있다.이렇게 만든 코드에 문제가 없다면 코드가 컴파일 되어 Cloud Formation 템플릿이 된다. 즉 CDK를 활용해서 Cloud Formation 템플릿을 만드는 서비스란 것이다.기존 YAML로 작성하던 템플릿을 익숙한 언어로 더 쉽게 생성하는 차이점이 있다.이는 인프라와 애플리케이션 런타임 코드를..

AWS 2024.12.04

[트러블 슈팅] 로그인 방식과 보안에 대한 고찰 - 2 (jwt 토큰과 XSS, CSRF 공격, 액세스 토큰과 리프레시 토큰의 저장 위치)

https://2junbeom.tistory.com/142 [트러블 슈팅] 로그인 방식과 보안에 대한 고찰 - 1 (세션 로그인 방식과 jwt 토큰 발급 방식)실제로 운영할 서버를 만들면서, 보안에 대해서도 신경을 굉장히 많이 쓰게 되었다.XSS 공격과 CSRF 공격을 막기 위해 공부한 것들을 정리하겠다. 우선 세션 로그인 방식과 jwt 토큰 발급 방식에2junbeom.tistory.com지난 포스트에서 로그인 방식을 선정해보았다. 이제 선정한 jwt 토큰 기반 로그인 방식을 사용할 때 어떤 보안 조치를 해야하는지 살펴보도록 하겠다. 우선 XSS 공격이란 무엇일까? XSS 공격Cross Site Scripting의 약자로 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입해전혀 다른 기능..

[트러블 슈팅] 로그인 방식과 보안에 대한 고찰 - 1 (세션 로그인 방식과 jwt 토큰 발급 방식)

실제로 운영할 서버를 만들면서, 보안에 대해서도 신경을 굉장히 많이 쓰게 되었다.XSS 공격과 CSRF 공격을 막기 위해 공부한 것들을 정리하겠다. 우선 세션 로그인 방식과 jwt 토큰 발급 방식에 대해 비교해 보도록 하겠다. 세션 로그인 방식과 jwt 토큰을 활용한 로그인 방식두 가지 중 우리는 프로젝트에 어떤 로그인 방식을 도입해야 할까? 우선 세션 로그인 방식이 뭔지부터 알아보도록 하자 세션 로그인 방식사용자가 로그인을 시도한다.데이터베이스에서 인증 정보를 확인한다.세션 id를 발급하고 해당 정보를 세션 저장소에 저장한다.세션 id를 쿠키로 설정해서 프론트엔드에 반환한다.세션 id가 쿠키에 설정된 이후 플로우사용자가 요청을 보낸다.쿠키에 세션 id 정보가 포함돼 있다.서버의 세션 저장소에서 세션 i..

[트러블 슈팅] 협업 간 데이터베이스 ddl 충돌 문제

이제 프로젝트를 진행하며 발생하는 문제 해결과정을 정리해보려고 한다.. 파이팅 ! 문제 없이 돌아가고 있던 우리의 개발 서버가 갑자기 작동하지 않게 되었다 작업이 끝난 브랜치를 머지하고 나서 ci/cd를 통해 다시 배포를 진행한 것인데,이 이후에 문제가 발생해서 당연히 새로 머지한 브랜치에 문제가 있다고 생각을 했다. 하지만 머지하기 전에 다 테스트를 진행하고 머지를 한 것이어서, 서버가 돌아가지 않을 이유가 없었고, 도대체 어디서 문제가 발생한 것인지 로그를 뒤적 거려보았다.  에러 로그 발견 ! alter table if exists study add column start_date timestamp(6) not null2024-11-29 15:51:18 [main] WARN o.h.t.s.i.Exc..

[AWS] aws 강의 섹션 25 (AWS SAM)

AWS SAMSAM = ServerLess Application Model서버리스 애플리케이션을 개발하고 배포하기 위한 프레임워크이다.코드를 작성하고 나서 SAM과 호환되는 Yaml 형식의 구성 파일을 사용하게 된다.아주 간단한 Sam.yml 파일로 아주 복잡한 클라우드 포메이션을 만들 수 있다.클라우드 포메이션의 모든 항목을 지원한다샘 내부적으로 코드 디플로이를 사용하여, 람다 함수를 배포할 수 있으며 람다, api 게이트웨이, 다이나모 DB를 로컬에서 실행하는 데 도움을 줄 수 있다.샘은 서버리스 애플리케이션을 기반으로 이를 로컬에서 디버깅하고 클라우드 포메이션을 사용해서신속하게 배포할 수 있도록 설계됐다.AWS SAM - RecipeSAM은 레시피로 구성되며, 템플릿 맨 위에 SAM 템플릿임을 나타..

AWS 2024.11.28

[AWS] aws 강의 섹션 24 - 2 (Code Deploy, Code Star, Code Artifact, code Guru)

CodeDeploy코드 디플로이는 애플리케이션 배포를 자동화해주는 서비스다. 만약 배포한 서비스에서 장애가 발생한다면, 클라우드 워치 알림을 통해 자동으로 롤백을 시킬 수도 있다.애플리케이션을 배포하는 속도도 조절할 수 있다.배포 방식을 정의하기 위한 appsepec.yml 파일이 존재한다.CodeDeploy - EC2/On-Primises 플랫폼애플리케이션과 코드를 EC2 인스턴스와 온프레미스 서버에 배포할 수 있다.또한 두 종류의 배포를 할 수 있는데, 하나는 현재 위치 배포고, 다른 하나는 블루/그린 배포다.차이점은 조금 이따 알아보도록 하겠다.배포를 하려면 먼저 codeDeploy 에이전트를 타깃 인스턴스에서 실행시켜야한다.해당 에이전트를 통해 새로운 코드로의 업데이트가 진행된다.배포 속도를 정의..

AWS 2024.11.27

[AWS] aws 강의 섹션 24 - 1 (CI/CD, Code Commit, Code Build, Code Deploy)

CI/CD란자동으로 코드를 리포지토리에 푸시하고자동으로 테스트를 진행하며배포까지 자동으로 진행해주는 모든 과정을 말한다.CI 란여러 종류의 코드 리포지토리가 존재한다. (대표적으로 github)CI는 Continious Intergration의 약자로 지속적 통합을 의미한다.코드를 저장소에 푸시했을 때 자동으로 코드를 빌드하고, 테스트를 진행하여 코드 빌드에 문제가 없는지 확인하는 과정이 ci이다.이 빌드 과정이 무사히 통과 된다면, 바로 배포를 할 수 있다는 의미이다.CD란Continious Delivery의 약자다.ci를 통해서 빌드 테스트가 통과된 코드를 배포 서버에 올려서 자동으로 배포하는 과정이다.코드를 저장소에 푸시할 때마다. 자동으로 모든 과정이 이뤄지게 만들 수 있다.여러 가지 CI/CD ..

AWS 2024.11.20

[AWS] aws 강의 섹션 22 (Dynamo DB)

기존의 RDS의 문제점 더 좋은 성능의 데이터베이스를 원한다고 했을 때 RDS는 수직적 스케일링밖에 하지 못 한다.물론 수평적 스케일링도 가능하지만, 읽기 전용 복제본을 만들어 부하를 분산 시키는 방법 밖엔 없다.RDS에는 수평적 쓰기 스케일링은 존재하지 않는다.이러한 문제점을 해결하기 위해 NoSQL 데이터베이스가 나타났다. (DynamoDB)NOSQL DatabaseNoSql은 수평적 확장성을 갖는다.유명한 기술로는 몽고 디비와 다이나모 디비가 있다.그러나 지원되지 않는 쿼리문이 굉장히 많다.sum, avg 같은 집계 연산이나 쿼리문이 지원되지 않기 때문에, 수평 확장성을 갖는다.Amazon DynamoDB고 가용성의 NoSQL 데이터베이스이다.여러 가용 영역에 걸쳐 즉시 복제가 가능하다.항상 빠른 ..

AWS 2024.11.05