기술 면접 대비 CS전공 핵심요약집을 읽고 정리한 내용입니다. 1.1.1 운영체제(⭐️)운영체제란 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다.컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다.여기서 얘기하는 컴퓨터 시스템의 자원은 CPU, 메모리 등을 말한다. 이러한 자원들은 한정되어 있다. 1.1.2 운영체제의 목적(⭐️)한정된 컴퓨터 자원을 관리하는 시스템이 바로 운영체제이다.이러한 역할에 기반해 OS는 4가지 목적이 있다.1. 처리 능령 향상: OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상한다.2. 반환 시간 단축: OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소..
서론Spring Boot에서 MongoDB를 사용할 때 @GeneratedValue을 사용할 수 없어 AUTO_INCREMENT를 사용할 수 없습니다. 따라서 JPA와 SQL DB를 사용할 때와 동일한 효과를 낼 수 있는 방법이 필요합니다.이러한 문제의 해결책은 다음과 같습니다.다른 컬렉션(테이블)에서 생성된 시퀀스를 저장할 컬렉션(테이블)을 만듭니다.그리고 새로운 레코드를 생성할 때, 이 컬렉션을 사용하여 다음 값을 가져오면 됩니다. 코드 예시FitTrip 프로젝트에서 적용한 코드를 예시로 들어 설명해 보겠습니다.Collections우선 위에서 얘기한 것과 같이 다른 컬렉션을 위한 auto-incremented sequence를 저장할 컬렉션을 만들 것입니다.이 컬렉션의 이름을 auto_sequence..
서론채팅에는 이모지와 댓글이 달려 있을 수 있습니다.그래서 채팅 목록을 조회하면 해당 채팅에 달려 있는 이모지와 댓글의 개수를 채팅 마다마다 달아서 프론트에 응답을 해야 했습니다. MongoDB 같은 경우는 조인 연산이 없어 MySQL처럼 table 조회 시 다른 table을 조인해서 데이터를 가져오는 방식으로 생각할 수 없었습니다.처음 생각 한 수정 전 로직에서는 채팅 목록을 불러온 후 채팅 목록만큼 반복문을 돌면서 채팅에 달려있는 이모지와 댓글의 개수만큼 쿼리가 날아가는 문제가 발생했습니다.그래서 이러한 쿼리 개수를 줄이기 위해 수정한 로직에 대해 글을 작성하려 합니다.수정 전 로직특정 channelId에 해당하는 채팅 목록을 불러오고 해당 값들을 DTO로 변환불러온 채팅 개수만큼 반복문을 돌면서 채..
API GATEWAY에서의 JWT 인증 기반의 프로젝트에서 Socket 인증?현재 FitTrip 프로젝트에서는 클라이언트가 요청 헤더에 JWT를 담아서 보내고 api gateway 쪽에서 헤더에 있는 JWT를 파싱 후 해당 JWT 유효성을 검증하고 있다.그런데 WebSocket의 경우 헤더의 토큰을 담아서 보내던 HTTP 프로토콜과는 완전히 달라 인증 처리를 어떻게 하면 좋을지 고민이었다.api gateway는 웹소켓 연결 요청 라우팅이 가능한가?처음에는 HTTP 요청에 대해서는 api gateway에서 다른 서비스로 라우팅 처리가 가능한 걸 봤지만 웹소켓 연결 요청은 채팅 서비스로 라우팅이 가능할까 라는 의문을 가졌다. 그리고 자료를 찾아보면서 아래와 같은 사실을 찾았다.아래 이미지는 토리맘의 한글라이..