- [ backend/oauth ][oauth] 카카오 로그인 이해하기2024-01-09 21:36:42🔗 OAuth 2.0의 동작원리 🔗 카카오 로그인 시작하기 카카오 로그인 이해하기 로그인 과정 아래 다이어그램은 카카오 로그인을 이용한 서비스 로그인 과정을 나타낸 것이다. 사용자 클라이언트, 서비스 서버, 카카오 인증 서버, 카카오 API 서버를 OAuth 역할에 매핑해봤다. 사용자 클라이언트 == 클라이언트 FE 서비스 서버 == 클라이언트 BE 카카오 인증 서버 == 인가 서버 카카오 API 서버 == 리소스 서버 Step 1 : 카카오 로그인 사용자가 서비스에서 `카카오 로그인` 버튼을 클릭하면, 서비스는 카카오 인증 서버로 인가 코드 발급을 요청하게 된다. 카카오 인증 서버는 사용자에게 인증을 요청한다. 사용자가 인증에 성공하면 서비스의 동의 항목 설정을 바탕으로 사용자에게 동의 화면을 전달한다..
- [ backend/oauth ][oauth] 카카오 로그인 시작하기 (어플리케이션 등록/카카오 로그인 활성화)2024-01-09 17:18:05카카오 로그인을 위한 세팅 이번 포스팅에서는 카카오 로그인을 위한 사전 세팅만 다룬다. 어플리케이션 등록하기 카카오 로그인을 사용하려면 먼저 내 어플리케이션을 등록해야 한다. `kakao developers > 내 어플리케이션`에 접속한다. 어플리케이션 이용 안내를 참고하여 등록해주면 위와 같이 내 어플리케이션이 등록된 것을 확인할 수 있다!! 카카오 로그인 활성화하기 내 어플리케이션의 상세 페이지를 들어오면 좌측 상단에 햄버거 버튼이 보인다. 해당 버튼을 클릭하여 `카카오 로그인` 탭을 선택한다. 활성화 상태를 `ON`으로 변경하고, 리다이렉트 URI를 등록해줬다. 리다이렉트 URI는 카카오 로그인 서비스에서 서드 파티 어플리케이션인 클라이언트로 다시 돌려 보내기 위해 사용된다. 추후에 구글, 네이버도..
- [ backend/oauth ][oauth] OAuth 2.0의 동작원리2024-01-09 05:57:27구글, 트위터, 페이스북 계정으로 다른 사이트에 로그인하는 것은 무척 편리하다. 하지만 편리함이 전부가 아니다. 서드 파티 사이트에 새 계정을 생성하거나 SNS 계정의 아이디, 비밀번호를 입력하는 것보다 안전하다. OAuth란? OAuth의 개념에 대해 알아보기 전에 OAuth의 동작 시나리오부터 살펴보자! OAuth는 어떻게 동작할까? 구글 계정으로 서드 파티 어플리케이션 A에 로그인하는 상황을 가정하겠다. A가 구글 계정의 프로필을 사용하기 위해서는, 사전에 A가 구글 계정에 대한 접근 권한을 가지고 있어야 한다. 과거에는 서드 파티 어플리케이션에 구글 아이디와 패스워드를 전달해야 구글 서비스에 접근할 수 있었다. 하지만 이는 굉장히 큰 도박이다. 서드 파티 어플리케이션이 구글 계정을 악의적인 용도로..
- [ backend/aws ][aws] rds 만들기2024-01-08 17:49:22RDS 생성하기RDS란?rds는 Relational Database Service의 약자로, 데이터베이스를 설치하고, 운영하는 것을 좀 더 쉽게 만들어주는 웹 서비스다. 번거롭고 까다로운 작업을 제거함으로써 본질적인 어플리케이션 자체에 집중할 수 있다.일반적으로 DB 인스턴스는 vpc의 프라이빗 서브넷에 배치한다. 같은 vpc 내의 ec2에서 DB 인스턴스에 접근하는 것은 가능하지만 vpc 바깥의 리소스에서는 접근하지 못하도록 구성한다. MySQL RDS 생성하기rds 서비스에서 `databases`를 선택하고, `Create database` 버튼을 클릭한다.`Easy create`를 선택하고, MySQL 엔진을 선택한다. 인스턴스 크기는 프리티어로 지정했다.기존에 생성해놓은 ec2와 연결하기 위해 `..
- [ backend/aws ][aws] ec2 스왑 공간 할당하기 (OOM)2024-01-08 03:43:13프리티어가 프리티어인 이유는 개복치이기 때문이다 😇 프리티어를 지원하는 ec2 인스턴스를 생성하고, ssh로 원격 접속하여 도커 컨테이너를 실행하고자 했다. 근데 도커 컨테이너가 곧바로 꺼지는 문제가 발생했다. (황당..) 컨테이너의 exit code는 137로, OOM*으로 인한 종료를 의미했다. *OOM : (Out Of Memory) 인스턴스에서 사용할 수 있는 메모리가 모두 소진되어 더 이상 할당할 수 없는 상태 사양 높은 인스턴스를 쓰기엔 금전적인 수입이 없는 학생(?) 나부랭이라서 프리티어를 포기할 수 없었다. 다행히도 OOM 문제를 겪은 사람이 많아 이에 대한 해결책이 존재했다. swap이란? 스왑은 컴퓨터에서 주메모리가 부족할 때 사용할 수 있는 보조 저장 공간이다. 주메모리는 프로그램에 ..
- [ backend/ci•cd ][CD] 블루/그린 무중단 배포 구현하기 2편 (GitHub Actions/Shell Script)2024-01-08 00:02:16🔗 [CD] 블루/그린 무중단 배포 구현하기 1편 (NGINX/Docker Compose) 이번 포스팅에서는 1편에서 작성한 도커 컴포즈 파일을 바탕으로 블루/그린 무중단 배포를 구현할 것이다. GitHub Actions란? 깃헙 액션은 깃헙에서 제공하는 자동화 도구로, 빌드, 테스트, 배포 파이프라인을 자동화할 수 있다. 깃헙 액션은 특정 이벤트가 발생하면 액션을 자동으로 실행하게 되는데, 이를 활용하여 특정 브랜치에 코드가 push 되었을 때 어플리케이션을 배포할 수 있다. 이외에도 레포지토리에 이슈가 생성될 때마다 자동으로 적절한 라벨을 붙여주는 등의 워크플로우를 만들 수 있다. workflow 워크플로우는 하나 이상의 작업을 실행하는 자동화된 프로세스다. `.github/workflows` 디렉토..
- [ backend/ci•cd ][CD] 블루/그린 무중단 배포 구현하기 1편 (NGINX/Docker Compose)2024-01-07 18:20:00야 너두 무중단 배포 할 수 있어 🫵이 글은 도커, 엔진엑스, 깃헙 액션을 한 번도 써본 적 없고, 무중단 배포라는 용어도 처음 들어본 사람의 무모한 무중단 배포 도전기다. 제발 나처럼 고생하는 사람이 없길 바라며 삽질을 거름으로 완성한 블루/그린 무중단 배포 도전기를 풀어보겠다. 무중단 배포란?신규 버전의 어플리케이션을 새롭게 배포하는 과정을 가정해보자. 로컬에서는 신규 어플리케이션을 빌드하고, 서버에서는 현재 실행중인 버전을 종료한다. 기존 버전의 종료되면 빌드한 결과물을 서버에서 실행하고, 그 결과 신규 어플리케이션이 배포된다.하지만 해당 방법은 구버전이 종료되고 신규 버전이 실행되기 전까지 사용자가 서비스를 이용할 수 없다는 치명적인 단점이 있다. 이를 보완하고자 서비스의 중단없이 업데이트를 수..
- [ backend/aws ][aws] vpc 설정하기 (Connection timed out 이슈/네트워크 acl)2024-01-03 15:12:41# ssh -i ${PATH}${KEY_PAIR_NAME}.pem ${INSTANCE_USER_NAME}@${INSTANCE_PUBLIC_DNS_NAME}ssh -i ${KEY_PATH}.pem ubuntu@ec2-${PUBLIC_IP}.ap-northeast-2.compute.amazonaws.com위의 명령어를 이용하여 ec2에 접속하려는데 `Connection timed out` 에러가 발생했다. 보안 그룹의 인바운드 규칙에 ssh 인바운드 규칙을 추가했는데 뭐가 문제일까? (인스턴스 정보 확인하기)How do I troubleshoot Amazon EC2 instance connection timeout errors from the internet?ec2 인스턴스 보안 그룹 확인 : 내 ip 대역..