대규모 서비스를 위한 백엔드 확장 전략 (2): MSA와 데이터 샤딩
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.메시지 큐 1.1 메시지 큐란 생성자는 이벤트를 발행하여 메시지 큐에 보관하고, 메시지큐는 소비자가 꺼낼 때까지 안전하게 저장한다. 비동기 통신 매체이다. 1.2 장점 서비스 또는 서버 간 결합을 느슨하게 해주기 때문에 규모 확장성이 보장되어야 하는 어플리케이션을 안...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.메시지 큐 1.1 메시지 큐란 생성자는 이벤트를 발행하여 메시지 큐에 보관하고, 메시지큐는 소비자가 꺼낼 때까지 안전하게 저장한다. 비동기 통신 매체이다. 1.2 장점 서비스 또는 서버 간 결합을 느슨하게 해주기 때문에 규모 확장성이 보장되어야 하는 어플리케이션을 안...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.데이터 베이스 다중화 1.1목적 대부분의 어플리케이션은 쓰기보다 읽기 연산이 많기 때문에 성능을 위해 데이터 변경은 주 DB로하고, 읽기 연산은 부 데이터베이스 서버들로 분산한다. 1.2개념 주 데이터베이스(Master) Insert, Update, Delete...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 사전과제 동시에 같은 DB Table row 를 업데이트 하는 상황을 방어하기 위해 어떻게 개발하실 건지 설명해주세요. MySQL을 사용한다고 가정하였을 때 동시에 같은 DB Table row를 업데이트를 방지하기 트랜잭션 또는 락을 사용합니다. 트랜잭션 SET TRANSA...
OSSCA 2차 체험형 프로젝트 Git / Github 시작부터 DevOps / MLOps 까지를 6주간 참여하게 되었습니다. 이번 포스팅에서는 git 개념과 프로젝트 실습 내용을 정리해나갈 예정입니다. 프로젝트 명 Git / Github 시작부터 DevOps / MLOps 까지 기간 협업도구(Git) 심화 과정 멘토링(3주) + 분야별 오...
옵셔널 체이닝이 필요한 이유 옵셔널 체이닝 ?. 을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있습니다. 옵셔널 체이닝이 추가 되기 전엔 && 연산자로 연결해 실제 해당 객체나 프로퍼티가 있는지 확인해야하기 때문에 코드가 길어지는 단점이 존재하였습니다. let user = {}; // 주소 정보가 없는 사용자 ...
Vue.js 공식홈페이지에서 TypeScript와 Composition API 사용의 일부를 정리한 내용입니다. 최근 Vue2로 작성된 사내 서비스를 Vue3 Composition API + Nuxt + TypeScript 형태로 전환을 진행 중에 있습니다. Composition API의 장점은 Options API와 달리 분산되어 있는 ...
타입스크립트란? 자바스크립트 타입스크립트를 알아보기 전 우선 자바스크립트의 히스토리에 대해 간략히 알아보겠습니다. 우선, 자바스크립트(ECMAScript)는 처음에 브라우저를 위한 스크립팅 언어로 만들어졌습니다. 자바스크립트는 점점 유명해지면서 실행 엔진을 최적화 시키고, 최적화 된 것을 이용해 할 수 있는 확장하여 웹 개발자가 더 많은 것을 할 수...
파일시스템과 데이터베이스의 차이점 파일시스템 과거에는 데이터를 관리하기 위해 파일시스템을 사용하였습니다. 파일 시스템은 데이터를 파일로 관리할 수 있도록 파일 생성/삭제/수정/검색 기능을 제공하며 운영체제와 함께 설치됩니다. 파일시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조뿐만 아니라, 물리적인 구조까지 정확히 파악해야 필요한 데이터에 직접...
Spring MVC Request LifeCycle Spring MVC Request LifeCycle에서 Filter, Dispatcher Servlet, Interceptor의 개념과 차이점에 살펴보겠습니다. 필터(Filter) 필터는 사용자가 설정한 URI 패턴에 대한 요청들에 대해 필터링(CORS, 인코딩 변환) 등의 필터링 역할을 수행합...
프리온보딩 백엔드 챌린지 변경에 유연한 코드 설계 : 클린코드와 SOLID까지 강의를 정리한 내용입니다. 의미있는 이름 1.의도를 분명히 밝혀라 변수 / 함수명만 봐도 어떤 동작을 해야하는지 예측이 되어야 합니다. 즉, 이름에서 의도를 분명히 밝혀야 합니다. 만약, 의미가 명확하지 않으면 이름이 길어지더라도 이름에 의미를 붙여 작성할 필요가...