4장 - 처리율 제한 장치의 설계처리율 제한 장치(rate limiter)처리율 제한 장치는 클라이언트나 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치다.HTTP에선 API 요청 횟수가 제한 장치에 정의된 임계치(threshold)를 초과하면 다른 모든 호출은 처리가 중단(block)된다.사용자는 초당 2회 이상 새 글 생성 불가같은 ip 주소로 하루 10개의 계정 생성 제한같은 디바이스 주 5회 이상 리워드 요청 불가처리율 제한 장치의 이점DoS 공격에 의한 자원 고갈 방지비용 절감서버 부하를 줄여 서버 비용을 절감할 수 있다.제 3자(third-party) API에 사용료를 지불할 경우 매우 중요함.서버 과부하 방지봇에 의한 트래픽이나 사용자의 잘못된 이용 패턴으로 유발된 트래픽을 걸러낼 수 ..

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 책에 대해 디프만 16기에서 스터디에서 정리하며 남기는 글입니다. 스터디 GitHub : https://github.com/depromeet/16th-study-system-design-interview GitHub - depromeet/16th-study-system-design-interview: :book: 가상 면접 사례로 배우는 대규모 시스템 설계 기:book: 가상 면접 사례로 배우는 대규모 시스템 설계 기초 스터디 저장소. Contribute to depromeet/16th-study-system-design-interview development by creating an account on GitHub.github.com 1장. 사용자..

✅시작 전❗Spring Boot 애플리케이션 내부 모니터링을 위한 환경은 구축되어 있다는 전제하에 시작하도록 할게요.❗아직 Spring Boot 애플리케이션 내부 환경 구축이 안되신 분은 해당 게시물을 참고한 후 시작해 주세요!현재 게시물 새로 작성 예정이라 추 후 다시 작성해서 링크 수정하도록 할 예정입니당 -> 간단하게 설명드리면 Spring Actuator 의존성 추가해서 설정해 주시고, log back을 Loki가 받을 수 있게 설정해 주시면 됩니다. Spring Boot Prometheus, Grafana, Loki 등을 활용한 모니터링을 위한 환경 구축loki4j를 사용해 서버 인스턴스에서 데이터를 가져오기 때문에 promtail은 사용하지 않았습니다.모니터링 인스턴스를 따로 사용하고 있으며,..

아키텍처갑자기 아키텍처?테스트는 품질을 위한 도구이면서, 설계를 위한 도구임.Testability를 높여야 설계를 위한 도구로 사용 가능.테스트와 설계는 상호보완적.테스트가 어렵다면 아키텍처가 정답을 알려줌. 개발하기 어렵다면, 테스트하기 쉽도록 개발하면 편하다. 아키텍트의 정의아키텍처란 어떤 비즈니스 문제를 해결하기 위해 준수해야하는 제약을 넣는 과정!아키텍처를 지키려고 하다보면 오히려 더 불편해짐.이로 인해 꼭 필요한 것이 아니라면 차라리 없는 것이 나을 수 있음.그럼에도 아키텍처를 사용하는 이유?아키텍처를 사용하기 전 문제 상황을 정확하기 인지하는 것이 중요함.꼭 써야하는 이유를 파악하고, 구성원들이 모두 동의해야함.아키텍처는 종착지가 아닌 여정에 가깝고, 고정된 산출물이 아니라 계속된 탐구 과정에..
각Service를 추상화 ServiceImpl로 구현체 이름을 변경Controller 패키지에Service 인터페이스 생성public interface UserService { User getByEmail(String email); User getById(long id); User create(UserCreate userCreate); User update(long id, UserUpdate userUpdate); void login(long id); void verifyEmail(long id, String certificationCode);}public interface CertificationService { void send(String email, long ..

service에 테스트코드 넣기 FakeRepository 구현public class FakeUserRepository implements UserRepository { private final AtomicLong autoGeneratedId = new AtomicLong(0); private final List data = new ArrayList(); @Override public Optional findById(long id) { return data.stream().filter(item -> item.getId().equals(id)).findAny(); } @Override public Optional findByIdAndStatus(long i..

mock, h2, SpringBoot 없이 테스트 작성하기. 대망의UUID가 등장!@Testpublic void User는_UserCreate_객체로_생성할_수_있다(){ // given UserCreate userCreate = UserCreate.builder() .email("kok202@naver.com") .nickname("kok202") .address("Pangyo").build(); // when User user = User.from(userCreate); // then assertThat(user.getId()).isEqualTo(0L); assertThat(user.getEmail())...

목표1. 도메인과 영속성 객체 구분2. 우리 시스템이 외부 시스템과 독립적이게 구성 현재Entity 객체들을 손볼 필요가 있음.UserEntity에 대응되는User 클래스 생성. Entity와 같은 필드를 가진 도메인 클래스 생성.public class Post { private Long id; private String content; private Long createdAt; private Long modifiedAt; private UserEntity writer; @Builder public Post(Long id, String content, Long createdAt, Long modifiedAt, UserEntity writer) { this.id = id; this.content = c..
- Total
- Today
- Yesterday
- python
- 육.지.행
- 회고
- 글또
- 디프만
- it 동아리
- 백엔드
- 16기
- spring boot
- 서버
- 10기
- server
- 리빙랩
- 파이썬
- 글로컬
- 후기
- AWS
- 인프런
- test
- 해커톤
- 6팀
- 알고리즘
- 스터디
- 연합 동아리
- 중간발표
- 육지행
- 프로그래머스
- 1주차
- tdd
- 15기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |