Programming
[AWS, Certified Developer Associate] IAM
IAM (Identity and Access Management)사용자 생성, 그룹배치글로벌 서비스계정 생성 시 기본적으로 Root account 생성사용자를 생성해 특정 그룹 내에 배치그룹 내에 그룹은 X각 그룹 별로 AWS 권한을 설정하는 데에 사용보안문제, 비용문제를 방지하기 위해 사용자 별 권한을 제한최소 권한의 원칙 (least privilege principle)한 사용자가 다수의 그룹에 포함될 수 있음 IAM 정책사용자, 그룹, IAM 역할의 권한을 정의하는 JSON 문서그룹 별로 정책 생성 가능그룹에 속해있지 않은 사용자에 대해서는 사용자에 대해서만 적용 가능한 인라인 정책 생성 가능 Version : 정책 언어 버전, 보통 2012-10-17Id : 정책 식별자 (Optional)Sta..
[시스템 설계: 한번에 인터뷰 합격하기] 샤딩(Sharding) & RDB vs NoSQL
1. 알고자 하는 것 샤딩 (Sharding) Sharding: MongoDB, Cassandra RDB vs NoSQL 2. 알게 된 것 데이터베이스의 확장성을 높이는 방법으로는 수직 스케일링 vs 수평 스케일링 방식이 있다. 수평 스케일링 방식으로는 샤딩(Sharding)이 있다. Sharding 샤딩은 데이터를 여러 DB에 분산하여 저장하는 방식이다. 데이터를 특정 Hash Function을 통해 구분지어 각 샤드에 저장한다. 클라이언트는 각 요청에 대해 Hash Function을 통해 데이터가 있는 샤드에 접근하여 데이터를 조회 및 저장한다. 각 샤드에는 장애 시 메인 샤드 DB로 승격될 수 있는 백업을 가질 수 있다. 이를 통해 새로운 DB를 계속 추가함으로써 무한히 확장 가능하다. (수평 스케..
[시스템 설계: 한번에 인터뷰 합격하기] 데이터베이스의 장애 극복 전략
1. 알고자 하는 것 데이터베이스의 장애 극복 전략 2. 알게 된 것 단일 데이터베이스에 장애가 발생하면 해당 데이터베이스가 복구될 때까지의 시간이 모두 다운타임이 된다. 이러한 다운타임은 많은 사용자가 실시간으로 트래픽을 발생시키는 서비스에서 매우 치명적이다. 이러한 데이터베이스의 장애 극복 전략에는 크게 세가지 방식이 있다. Cold Standby (수동 예비 방식) Warm Standby (예열 대기 방식) Hot Standby (상시 대기 방식) Cold Standby 단일 데이터베이스의 작업을 S3와 같은 스토리지 등에 주기적으로 백업하고, 장애 발생 시 해당 백업을 새로운 데이터베이스에 복원하는 방식 백업이 저장되기 위한 저장공간과 복원을 위한 하나의 추가적인 데이터베이스만 있으면 가능한 방식..
[시스템 설계: 한번에 인터뷰 합격하기] 수평 스케일링 vs 수직 스케일링
1. 알고자 하는 것 많은 트래픽에 대응하기 위한 확장성 - 수직 스케일링 vs 수평 스케일링 2. 알게 된 것 확장성이 없는 단일 서버 (Single Server)는 개인 웹사이트와 같이 트래픽이 많지 않고, 서버가 일시적으로 다운되어도 크게 상관이 없는 경우 유용한 설계 방식이 될 수 있다. 돈이 많이 들지 않고, 유지보수가 편하다. 상업 서비스와 같이 한 번에 수백만 명의 트래픽을 감당해야 하는 서버에 대해서는 확장성을 신경써야 한다. 이런 많은 트래픽을 가진 서비스에서 단일 서버 방식은 서버가 다운되면 전체 서비스가 중단되어 버리는 단일 장애점(SPOF, Single Point Of Failure)이 된다. 확장성을 늘리는 방식에는 수직 스케일링 방식과 수평 스케일링 방식이 있다. 수직 스케일링 ..
FeignClient에서 read timeout 발생 시 주의사항 (w/ Retry, RetryableException)
1. 알고자 하는 것 FeignClient에서의 read timeout FeignClient 이슈 분석 FeignClient에서 read timeout 발생 시 주의사항 2. 알게된 것 배경 회사에서 MSA 전환을 준비하기 이전 단계로, 일부 이관되어 멀티모듈로 구성되어있는 프로젝트에 대해 FeignClient로 모듈 간 통신을 하며 발생했던 이슈이다. 특정 조건에 해당하는 n건의 데이터에 대해 일괄적으로 배치 처리를 수행하는 Job이 있다. 해당 Job은 1시간 간격으로 수행되며, 한 번 수행 시 평균 약 5-10건의 데이터를 대상으로 수행된다. Job 내에서 다른 모듈의 API를 FeignClient를 통해 호출하여 추출된 데이터에 대한 비즈니스 로직을 처리한다. 반환값은 따로 없으며, 데이터에 대한..