가상 면접 사례로 배우는 대규모 시스테 설계 기초 #10 (알림 시스템 설계)

푸시, sms, email연성 실시간 시스템 (soft real-time)이라 가정합니다. 가능한 빨리 알림이 전달되어야 하지만 시스템에 높은 부하가 걸렸을때 약간의 지연은 무방하다.ios, android, laptop, desktopclient 애플리케이션 또는 서버

2022년 6월 11일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #9 (웹 크롤러 설계)

웹 크롤러 란? 로봇 또는 스파이더라고 불림 웹에 새로 올라오거나 갱신된 콘텐츠(이미지, 비디오, PDF, 웹 페이지 등)를 찾아내는 것이 주된 목적 몇 개 웹페이지에서 시작해여 그 링크를 따라 나가면서 새로운 컨텐츠를 수집한다. 사용처 검색 엔진 인덱싱: 웹 페이

2022년 6월 6일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #8 (URL 단축기 설계)

문제 이해 및 설계 범위 확정 시스템 설계 면접 문제는 정해진 결말을 없다. 그래서 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 기본적 기능 긴 URL 단축 기능 URL redirection 높은 가용성과 규모 확장성 그리고 장애 감내 개략적 추정 쓰기

2022년 6월 6일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #6 (키-값 저장소 설계)

키-값 저장소란? 키-값 데이터베이스 라고도 불림 저장되는 모든 값은 고유 식별자를 키로 가져야 함 해당 키에 매달린 값은 키를 통해서만 접근 가능 키는 텍스트 or 해시 값일 수 있다 (성능상 짧을수록 좋다.) 일반 텍스트키 - "lastloggedin_at"

2022년 5월 28일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #7 (분산 시스템을 위한 유일 ID 생성기 설계)

그냥 관계형 디비의 auto increment 쓰면 어떨까? 데이터베이스 서버 한대로는 요구를 감당할 수 없다. (분산 환경에서는 데이터 양이 많아서 한대로는 감당이 안된다는 뜻?) 여러 데이터베이스 서버를 쓰는 경우에는 지연 시간을 낮추기 무척 힘들다. (어떤 지연

2022년 5월 28일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #5 (안정 해시 설계)

데이터를 서버에 균등 배분하기 위해서 주로 사용되는 기술 수평적 규모 확작성을 달성하기 위해서는 매우 중요하다 서버의 부하를 균등하게 나누는 가장 보편적인 방법 hash(key) % N (서버의 갯수) 단점 해시 키 재배치 문제 서버 추가 또는 삭제로 갯수의 변경

2022년 5월 14일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #4 (처리율 제한 장치의 설계)

처리율 제한 장치란? 클라이언트 또는 서비스가 보내는 트래픽 처리율을 제어하기 위한 장치이다. 예를 들면 특정 기간내에 전송되는 클라이언트의 요청 횟수를 제한한다. 추가로 도달한 모든 호출은 block 된다. 처리율 제한 장치의 장점 dos공격에 의한 자원 고갈을 방

2022년 5월 7일
·
0개의 댓글

가상 면접 사례로 배우는 대규모 시스테 설계 기초 #2,3(개략적인 규모 추정, 시스템 설계 면접 공략법)

효과적인 규모 추정을 위해서는 아래와 같은 기본 수치들을 잘 이해하고 있어야 한다.데이터 볼륨이 2의 제곱수로는 어떻게 표현되는지 (예 kb는 2의 10제곱)응답지연 값 (예 디스크 탐색은 10ms)가용성 관련 수치 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될

2022년 5월 1일
·
0개의 댓글

리팩터링 (12장 상속 다루기)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 메서드 올리기 상속 구조에 동일한 메서드가 존재한다면 부모에게 올려라. 메서드 올리기시 제거하려는 중복된 메서드가 만약 서브 클래스에만 있는 필드를 참조한다면 필드를 먼저 부모로 올려

2021년 12월 13일
·
2개의 댓글

리팩터링 (10장 조건부 로직 간소화)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 조건문 분해하기 조건문은 함수를 이해하기 더욱 힘들게 만든다. 왜냐하면 어떻게는 나열이 되어 있지만 무엇인지/왜 일어나는 지는 제대로 말해주지 않을때가 많기 때문이다. 거대한 코드 블럭

2021년 12월 5일
·
0개의 댓글

리팩터링 (11장 API 리팩터링)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. API란? 모듈과 함수는 소프트웨어를 구성하는 빌딩 블록이며, API는 이 블록들을 끼워 맞추는 연결부다. 질의 함수와 변경 함수 분리하기 겉보기 부수효과가 있는 함수와 부수효과가 없

2021년 12월 5일
·
0개의 댓글

JPA 스터디, #3

아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 정리한 글입니다. 고급매핑 상속 관계 매핑 객체지향 언어의 상속이라는 개념은 RDB 슈퍼타입 서브타입 관계랑 가장 유사하다. 방법 조인 전략 @Inheritance(strate

2021년 10월 19일
·
0개의 댓글

리팩터링 (6장 기본적인 리팩토링 -2)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 여러 함수를 클래스로 묶기 목적은 같은 데이터를 사용하는 함수를 한 클래스로 묶는 방법 여러함수를 변환 함수로 묶기와 동일 방법은 연관된 데이터를 다루는 함수와 데이터를 가진 객체를 리

2021년 10월 12일
·
0개의 댓글

리팩터링 (6장 기본적인 리팩토링 -1)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 여기부터는 구체적인 리팩토링 기법들 입니다. 함수 추출하기 코드를 보고 무슨 일을 하는지 파악하는데 시간이 걸린다면 함수로 추출후 무슨 일(목적) 하는지가 드러나는 이름을 지어라!(목적

2021년 10월 12일
·
0개의 댓글

리팩터링 (3장 코드에서 나는 악취 & 4장 테스트 구축하기)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 코드에서 악취가 풍길때 리팩토링이 필요한 시점이다. 어디까지 리팩터링 해야하는지 즉 악취를 어느정도까지 제거해야 하는지에 대한 기준은 숙련된 개발자의 직관을 따라야 한다. 결국엔 개개인

2021년 10월 5일
·
0개의 댓글

리팩터링 (2장 리팩터링 원칙)

아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 리팩터링이란 소프트웨어의 겉보기 동작은 그대로 유지한채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 (겉보기 동작은 그대로 유지한채 이란 표현은 사용자 관점에서는 달라지는

2021년 10월 5일
·
0개의 댓글

JPA 스터디, #2

아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 이해하여 정리한 글입니다. 엔티티 매핑 매핑 정보는 XML 또는 어노테이션 중에 선택 가능하다. 아래는 좀더 쉽고 직관적인 어노테이션 매핑기반으로 설명하겠다. @Entity 테이블과 매핑

2021년 9월 27일
·
0개의 댓글

JPA 스터디, #1

아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 이해하여 정리한 글입니다. JPA가 나온 배경 현시점에서 객체를 영구 보관하는 방법중 가장 현실적인 대안은 관계형 데이터베이스이다. 하지만 관계형 데이터베이스와 객체지향간에는 패러다임 불

2021년 9월 14일
·
0개의 댓글

비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 #5 (MSA 전환과 운영에 대한 tip)

아래 내용은 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 강의를 기반으로 하여 정리한 내용입니다. 자세한 내용 및 코드가 궁금하면 위에 강의를 참고해주세요. 사전작업 구성원 설득 monolithic -> MSA 전환은 많은 리소스가 필

2021년 9월 10일
·
2개의 댓글

비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 #4 (선물하기 프로젝트 개발)

아래 내용은 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 강의를 기반으로 하여 정리한 내용입니다. 자세한 내용 및 코드가 궁금하면 위에 강의를 참고해주세요. 이번 강의도 라이브 코딩이 대부분이라 개인적으로 개발하면서 유념하면 좋을 만한

2021년 9월 10일
·
0개의 댓글