배움 기록_실무 ✏️ 11

서버리스 아키텍처 적용기 - 서버리스란 무엇일까 ?

서버리스를 도입하게 된 계기는 서비스에 직접적으로 영향이 가는 API에서 광고 도메인을 분리하기로 결정이 되었고, 분리를 위한 아키텍처 구조는 서버리스를 사용하여 별도 자원 추가 없이 생성하기로 하였다. 최종적으로 사용한 아키텍처 구조는 Serverless Framework + AWS Lambda + AWS Api-Gateway 언어는 Node.js로 구성하였다. 블로그 포스팅의 목적인 서버리스(Serverless) ? 기존의 방식은 서비스를 배포하려면 항시 서버가 필요했고, 서버에 대한 개선 및 유지보수에 대한 인프라적인 문제가 존재한다. 이러한 문제를 해결하기 위해 생성된 것이 서버리스(Serverless)이다. Serverless 라는 단어만 보면 서버가 없는건가 ? 라는 의문이 든다. 하지만 서버..

AWS Simple Queue Service (SQS)

✅ Amazon SQS 기본 아키텍처 분산 대기열 Amazon SQS는 메시지를 SQS 서버에 중복 저장합니다. 메시지 수명 주기 생산자는 메시지 A를 대기열로 전송하고, 이 메시지는 Amazon SQS 서버에 중복 분산됩니다. 소비자는 메시지를 처리할 준비가 되면 대기열에서 메시지를 소비하고 메시지 A가 반환됩니다. 메시지 A는 처리되는 동안 대기열에 남아있고, 표시 제한 시간이 지속되는 동안 후속 수신 요청으로 반환되지 않습니다. 소비자는 대기열에서 메시지 A를 삭제함으로써, 표시 제한 시간이 만료되면 이 메시지가 수신되어 다시 처리하지 못하도록 설정합니다. ✅ Amazon SQS 사용 시 이점 보안 대기열에 메시지를 보내고 받을 수 있는 사용자를 제한할 수 있습니다. 이는, 기본 SQS 관리형 서버..

정적 메서드(static method)

❓정적 메서드는 언제 사용할까 static 키워드에 대해 공부를 하다보니, static method를 언제 사용을 할까에 대해 의문이 들었다. 보통 유틸 관련 메서드에서 많이 사용한다. 라고 들었지만, 유틸 관련 메서드가 아닌 다른 곳에서 쓰일 일이 있을까? 라는 의문점도 같이 찾아왔다. ✅ static 메서드의 특징 및 장점 static으로 선언되어 있는 메서드 들은 해당 메서드를 사용할 때, 인스턴스 생성 없이 호출이 가능하다. JVM이 시작될 때 static 영역에 저장되어 프로그램이 끝날 때 까지 사라지지 않고 메모리에 남아있다. 속도가 빨라지고 공유(반복적인 사용)에 효율적이다. 생성자를 호출 할 필요가 없으니 속도는 당연 빨라질 수밖에 없다. static 메서드를 호출하기 위해서 필요한 것은 ..

static의 모든 것

static 변수 public calss MyClass { static int myStaticVariable = 100; int myVariable = 200; } 위의 예제로 각 변수가 생성되는 공간에 대해 설명해본다. 자바 프로그램을 시작하면 JVM이 클래스 파일을 읽어 필요한 클래스와 변수/메서드들을 메모리에 생성한다. 이후 코드에서 그 클래스의 형을 가진 오브젝트를 생성하면 각 오브젝트마다 myVariable을 저장할 메모리 공간이 Heap이라는 메모리 공간에 생기게 된다. 모든 오브젝트는 Heap이라고 부르는 메모리 공간에 생긴다. 반면 static 변수는 Heap이 아닌 다른 공간에 생긴다. 이 공간의 이름은 MetaSpace이다. 위의 그림처럼 static 변수는 클래스에 귀속되지 각각의 오..

AWS Database Migration Workshop

👉🏻 DMS 각종 데이터베이스를 DMS를 사용하여 AWS Cloud로 마이그레이션하거나, 온-프레미스 인스턴스 간, 또는 클라우드와 온-프레미스 설정의 조합 간에 마이그레이션을 할 수 있다. 동종 마이그레이션 뿐, 아니라 이기종 데이터베이스 플랫폼 간의 마이그레이션도 지원해준다. 쉽게 말하여 DMS Migration은 기존 DB의 데이터를 새 DB에 옮겨주는 이삿짐 센터라고 생각하면 좋다. 👉🏻 마이그레이션 유형 전체 로드 (기존 데이터 마이그레이션) 기존 데이터를 복사할 수 있을 정도의 긴 중단을 감당할 수 있는 경우 전체 로드 및 CDC (기존 데이터 마이그레이션 및 변경 사항 복제) 전체 로드 완료 후, CDC 작업을 통해 변경된 데이터를 복제함 CDC Only 대량의 데이터 동기화를 위해 사용 ⁉..

구글 OAuth2 인증 방식

이처럼 웹 사이트 계정 인증에서 타 서비스의 계정을 사용하는 인증 방식을 OAuth 2.0 인증 방식이라고 한다. { "sub": "110248495921238986420", "name": "Aaron Parecki", "given_name": "Aaron", "family_name": "Parecki", "picture": "https://lh4.googleusercontent.com/-kw-iMgD _j34/AAAAAAAAAAI/AAAAAAAAAAc/P1YY91tzesU/photo.jpg", "email": "aaron.parecki@okta.com", "email_verified": true, "locale": "en", "hd": "okta.com" } 서비스 등록 특정 서비스의 OAuth 인증을..

OAuth 동작 방식

권한 부여 방식에 따른 프로토콜 종류 - 4가지 Authorization Code Grant : 권한 부여 승인 코드 방식 권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식 간편 로그인 기능에서 사용되는 방식으로 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 많이 사용 보통 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용된다. 권한 부여 승인 요청 시 response_type을 code로 지정하여 요청 클라이언트는 권한 서버에서 제공하는 로그인 브라우저를 띄어 출력 해당 브라우저로 유저가 로그인을 하면 서버는 권한 부여 승인 코드 요청 시 전달 받은 redirect_url로 Authorization Code..

쿠팡 파트너스 API 연동

이번에 주어진 일로 쿠팡 파트너스 API 연동을 하게 되었다. 나름 재밌게 한 일이라 이번달 글을 쿠팡 파트너스 API 연동에 대해서 글을 적으려고 한다. 현재 앱에서 상품 상세로 들어가게 되면 해당 상품의 키워드를 찾아 쿠팡 API를 찌르게 되면 키워드에 관련하여 상품 목록이 내려오게 된다. 1. Acess Key와 Secret Key를 생성 - 해당 key는 파트너스 회원에게만 제공되기 때문에 블로그에도 공개하지 않는다. 2. 발급받은 Key를 사용하여 HMAC 서명 생성 - HMAC은 해시 메시지 인증코드의 준말로써 RFC2104 표준 암호화 프로토콜이다. - 쿠팡 파트너스 API는 HMAC 기반으로 제작되어 모든 request header의 Authorization에 생성한 HMAC signatu..

Spring batch 개발

회사에서 처음으로 배치개발을 했다....... 너무 어려웠다...... ㅜㅜㅜ 그래서 시작전 벼락치기 공부한것들을 정리해봤다😁 @Configuration spring batch의 모든 job은 @Configruation으로 등록해서 사용합니다. jobBuilderFactory.get("simpleJob") simpleJob 이란 이름의 batch job을 생성합니다. job의 이름은 별도로 지정하지 않고 이렇게 builder를 통해 지정합니다. stepBuilderFactory.get("simpleStep1") simpleStep1 이란 이름의 batch step을 생성합니다. 이것도 마찬가지로 Builder를 통해 이름을 지정합니다. .tasklet((contribution, chunkContext))..

JWT에 대해서

1. JWT 탄생 배경 **1) HTTP 프로토콜은 Stateless로 동작합니다. → 새 요청마다 다시 인증을 해야 합니다.** 위의 문제를 해결하기 위한 전통적인 방법은 SSS(server side session)를 사용하는 것입니다. 2) SSS 방법 시나리오 해당 시나리오 에서는 먼자 사용자의 이름과 비밀번호를 확인합니다. 해당 사용자가 인증이 된 경우, 서버는 세션 ID를 메모리에 저장하고 해당 ID를 클라이언트에게 반환합니다. 그 이후의 요청에 대해서는 클라이언트를 식별하기 위해 세션ID를 서버로 보내면 됩니다. 결과적으로 → SSS 방법을 이용하게 되면 데이터베이스에 대한 인증요청 수가 줄어듭니다. 2-1) 해당 시나리오의 문제점 → 확장에 대한 문제 API 시대에 있어 엔드 포인트가 많은 ..