분류 전체보기
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 3장) 시스템 설계 면접 공략법DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:45
시스템 설계 면접 공략법 설계의 순수성에 집착한 나머지 타협적 결정을 도외시하고 과도한 엔지니어링을 하게 되는 것에 유의해야 함 효과적 면접을 위한 4단계 접근법 1단계 문제 이해 및 설계 범위 확정 부정적 신호 (Red Flag)요구 사항을 완전히 이해하지 않고 답을 내놓는 행위바로 답부터 들이밀기 속도를 늦춰 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 할 것 올바른 질문을 할 것 적절한 가정을 할 것 시스템 구축에 필요한 정보를 모을 것 질문 예시 구현해야 하는 기능 제품의 사용자 수 회사의 규모 확장성 기간벌 규모 예상치 회사가 사용하는 기술 스택 설계 단순화를 위한 기존 서비스 2단계 개략적인 설계안 제시 및 동의 구하기 면접관에게 개략적인 설계안을 제시하고 동의를 얻을 것 면접관을 ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장) 개략적인 규모 추정DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:14
개략적인 규모 추정 어떤 설계가 시스템의 요구 사항에 부합하는지 보기 위한 지표로 성능 추정에 사용됨 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수로 표현최소 단위 = 1바이트 = 8비트 = ASCII문자 하나가 차지하는 메모리 크기UTF-8의 경우 1~4바이트 2의 제곱수 근사치 이름 축약형 101천 1킬로바이트1KB201백만 1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB501000조1페타바이트1PB 응답 지연 값 연산명시간 L1 캐시 참조 0.5ns분기 예측 오류 (branch mispredict) 5nsL2 캐시 참조 7ns뮤텍스 락 / 언락 100ns주 메모리 참조 100nsZippy로 1KB 압축 10000ns = 10us1Gbps 네트워크로 2KB 전송 20000ns ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1장) 사용자 수에 따른 규모 확장성DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 22:35
단일 서버 모든 컴포넌트가 단 한대의 서버에서 실행됨 사용자의 요청 처리 흐름 사용자가 도메인 이름을 이용하여 웹 사이트에 접속 도메인 이름을 DNS에 질의하여 IP 주소로 변환해당 IP 주소로 HTTP 요청 전달 요청 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답 반환 모바일 앱과 웹 서버간 통신을 위해서는 HTTP 프로토콜을 이용 응답으로 반환되는 데이터의 포맷으로는 보통 JSON을 사용 데이터베이스사용자가 늘어남에 따라 트래픽을 감당하기 위해 여러 서버를 구성하게 됨 웹 / 모바일 트래픽 처리 용도 데이터 베이스 용 따로 구성함에 따라 독립적 확장이 가능해짐 데이터 베이스의 선택 관계형 데이터베이스 (RDBMS)자료를 테이블과 열, 칼럼으로 표현 SQL을 사용하여 여러 테이블에 있는 ..
-
github으로 maven repo 만들기GIT 2024. 10. 9. 18:45
사이드 프로젝트를 초기 진행을 해보면서 사용자에게 서비스를 제공하는 방식으로maven repo 제공 방식을 경험해볼 수 있는 기회가 생겨서 어떻게 구현했는지 기록해보았다! github을 이용해서 maven repo를 구현해서 사용할 수 있게 제공해보았다. mvn-repository-publish maven repo 형식으로 서비스를 제공하기 위해서 mvn-repository-publish를 사용할 수 있다. 공식 문서 : https://docs.github.com/ko/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#authenticating-to-github-packages Gradle 레지스..
-
동시 삭제 요청으로 인한 StaleObjectStateException 해결 - redisson lock 적용기 (feat. Spring AOP, applicationEventListener)Spring 2024. 10. 1. 16:58
최근에 회사에서 동시성 이슈가 발생하여 해결하기 위한 작업을 진행했는데, 이때, redisson을 사용해볼 기회가 생겨서 어떤 방식으로 redisson lock을 구현했는지 기록해본다. 이전에 동시성 이슈를 해결하기 위한 강의를 듣고 정리했었다. ↓https://dodop-blog.tistory.com/464 인프런) 재고시스템으로 알아보는 동시성 이슈 해결 (2)지난 글에 이어서 다음의 인프런 강의를 실습해본다. https://www.inflearn.com/course/%EB%8F%99%EC%8B%9C%EC%84%B1%EC%9D%B4%EC%8A%88-%EC%9E%AC%EA%B3%A0%EC%8B%9C%EC%8A%A4%ED%85%9C/dashboard 재고시스템으로 알아보는 동시성이dodop-blog.t..
-
Grpc + Spring : 예외 처리 구현Spring 2024. 9. 22. 12:06
이번에는 grpc 서비스의 예외처리를 구현하는 방법을 작성해보고자 한다. grpc service : 특정 예외 메세지를 담아 지정된 예외로 발생하기 기존 rest 형식과 동일하게 grpc 서비스도 @GrpcExceptionHandler를 이용해서 예외 처리를 구현할 수 있다. 참고 : https://yidongnan.github.io/grpc-spring-boot-starter/en/server/exception-handling.html @GrpcAdvicepublic class GrpcExceptionAdvice { @GrpcExceptionHandler public Status handleInvalidArgument(IllegalArgumentException e) { ..
-
Grpc Spring Security - 3) Grpc Client에서 header를 포함한 grpc 호출하기Spring 2024. 9. 21. 14:45
이전 글에서 grpcService에서는 인증, 인가 처리를 구현했고, 이번에는 grpcClient에서 토큰을 포함해서 grpc를 호출할 수 있도록 구현해보자. grpcService의 인증 인가 구현 지난 글↓https://dodop-blog.tistory.com/472 Grpc Spring Security - 2) Grpc Service에 인증, 인가 구현하기이번엔 저번글에 이어서 인증 인가를 사용하는 Grpc Service를 구현해보자. Grpc Spring Boot Starter Security 관련 지난글↓https://dodop-blog.tistory.com/471 Grpc Spring Security - 1) GrpcSpringSecurity의 인증, 인가새dodop-blog.tistor..
-
Grpc Spring Security - 2) Grpc Service에 인증, 인가 구현하기Spring 2024. 9. 21. 14:03
이번엔 저번글에 이어서 인증 인가를 사용하는 Grpc Service를 구현해보자. Grpc Spring Boot Starter Security 관련 지난글↓https://dodop-blog.tistory.com/471 Grpc Spring Security - 1) GrpcSpringSecurity의 인증, 인가새롭게 신규 서버를 기존 서비스와 더불어 Grpc로도 기능을 제공해야하는 업무가 있어, 이번에 Grpc 통신을 할때 Security를 적용해보았다. 토큰을 이용한 인증, 인가를 구현하였다. 기본적으로 Spdodop-blog.tistory.com Dependency 추가 먼저 grpc service 구현을 위한 dependency를 추가한다. grpc spring boot start..