내가 그린

대규모 서비스를 위한 백엔드 확장 전략 (2): MSA와 데이터 샤딩

원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.메시지 큐 1.1 메시지 큐란 생성자는 이벤트를 발행하여 메시지 큐에 보관하고, 메시지큐는 소비자가 꺼낼 때까지 안전하게 저장한다. 비동기 통신 매체이다. 1.2 장점 서비스 또는 서버 간 결합을 느슨하게 해주기 때문에 규모 확장성이 보장되어야 하는 어플리케이션을 안...

대규모 서비스를 위한 백엔드 확장 전략 (1): DB 다중화와 캐싱

원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.데이터 베이스 다중화 1.1목적 대부분의 어플리케이션은 쓰기보다 읽기 연산이 많기 때문에 성능을 위해 데이터 변경은 주 DB로하고, 읽기 연산은 부 데이터베이스 서버들로 분산한다. 1.2개념 주 데이터베이스(Master) Insert, Update, Delete...

백엔드 아키텍처 설계 기초: 동시성 제어와 네트워크 프로토콜

원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 사전과제 동시에 같은 DB Table row 를 업데이트 하는 상황을 방어하기 위해 어떻게 개발하실 건지 설명해주세요. MySQL을 사용한다고 가정하였을 때 동시에 같은 DB Table row를 업데이트를 방지하기 트랜잭션 또는 락을 사용합니다. 트랜잭션 SET TRANSA...

JavaScript 옵셔널 체이닝(?.) 완벽 가이드: 안전한 객체 속성 접근법

옵셔널 체이닝이 필요한 이유 옵셔널 체이닝 ?. 을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있습니다. 옵셔널 체이닝이 추가 되기 전엔 && 연산자로 연결해 실제 해당 객체나 프로퍼티가 있는지 확인해야하기 때문에 코드가 길어지는 단점이 존재하였습니다. let user = {}; // 주소 정보가 없는 사용자 ...

TypeScript 기초: 타입 시스템과 객체지향 프로그래밍 활용법

타입스크립트란? 자바스크립트 타입스크립트를 알아보기 전 우선 자바스크립트의 히스토리에 대해 간략히 알아보겠습니다. 우선, 자바스크립트(ECMAScript)는 처음에 브라우저를 위한 스크립팅 언어로 만들어졌습니다. 자바스크립트는 점점 유명해지면서 실행 엔진을 최적화 시키고, 최적화 된 것을 이용해 할 수 있는 확장하여 웹 개발자가 더 많은 것을 할 수...

파일시스템과 데이터베이스: 차이점과 핵심 개념 정리

파일시스템과 데이터베이스의 차이점 파일시스템 과거에는 데이터를 관리하기 위해 파일시스템을 사용하였습니다. 파일 시스템은 데이터를 파일로 관리할 수 있도록 파일 생성/삭제/수정/검색 기능을 제공하며 운영체제와 함께 설치됩니다. 파일시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조뿐만 아니라, 물리적인 구조까지 정확히 파악해야 필요한 데이터에 직접...

클린코드와 SOLID 원칙: 변경에 유연한 객체지향 설계 방법

프리온보딩 백엔드 챌린지 변경에 유연한 코드 설계 : 클린코드와 SOLID까지 강의를 정리한 내용입니다. 의미있는 이름 1.의도를 분명히 밝혀라 변수 / 함수명만 봐도 어떤 동작을 해야하는지 예측이 되어야 합니다. 즉, 이름에서 의도를 분명히 밝혀야 합니다. 만약, 의미가 명확하지 않으면 이름이 길어지더라도 이름에 의미를 붙여 작성할 필요가...