전체 글(126)
-
Mongoose ObjectId Check
import mongoose from "mongoose"; const { ObjectId } = mongoose.Types; ObjectId.isValid(id); // 값이 맞다면 true, 맞지 않다면 false를 리턴
2023.08.25 -
Mac OS 서비스 중인 port 확인 및 중지
서비스 중인 포트 확인 sudo lsof -PiTCP -sTCP:LISTEN 특정 포트 닫기 sudo lsof -PiTCP -sTCP:LISTEN PID 로 중지시키기 sudo kill -9 [PID]
2023.08.25 -
Redis
Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS) 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소 Redis를 사용하는 이유는 무엇일까? 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않음. BUT! 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있음 일반적으로 서비스 운영 초반이거나 규모가 작은, 사용자가 많지 않은 서비스의 경우에는 WEB - WAS - DB 의 구조로도 데이터 베이스에 무리가 가지 않지만 사용자가 늘어난다면 데이터 베이스가 과부하 될 수 있기 때문에 이때 ..
2023.08.25 -
모노리포 vs 멀티리포
멀티리포, 모노리포 선택의 필요성 멀티리포, 모노리포에 선택에 대해 고민하기에 앞서, 왜 우리가 이들에 관심을 가져야 하는지 알아야 한다. 그 이유는 프로젝트의 최초 생성과 변화 과정을 들여다보면 알 수 있다. 초기 프로젝트 구조 프로젝트 초기에는 모노리딕 시스템으로 서비스를 구현하게 된다. 프로젝트의 크기가 크지 않고, 개발자의 수도 적기 때문에 모든 것을 한곳에서 처리하는 것이 효율적이다. 이 경우 시스템 자체가 쪼개어지지 않고 하나이기 때문에 레포지토리 역시 하나로 관리하게 된다. 프로젝트 거대화에 따른 마이크로 서비스 구성 더보기 프로젝트가 거대화되면서 모놀리식 아키텍처는 문제를 야기한다. 대표적으로 높은 결합도와 낮은 응집도을 예로 들 수 있다. 이를 해결하기 위해서 개발 조직은 시스템의 각 부..
2023.08.25 -
항해 WIL - 개발자로서의 항해 마지막 주
결국 해내고 말았다 99일간 9 to 9 정말 힘든 여정이었지만 끝내 나는 프로젝트를 완성해버렸고 발표도 잘해냈다. 팀장으로서 초반엔 부담감도 많았지만 팀원들을 믿고 같이 앞으로 나아가며 각자의 의견을 적극 수용하여 단한명의 이탈자없이 좋은 프로젝트 결과물이 나온 것 같다. 앞으로 우리에게 남은건 취업뿐.... 잘 해낼 것이다!! 다들 파이팅 항해99 사랑해요~
2023.05.01 -
항해 WIL - 개발자로서의 12주차
이제 최종발표까지 마지막 한주가 남았다... 이번주는 중간발표의 피드백과 추가기능 구현에 초점을 맞춰 여러 기능들을 업데이트했다. 첫번째로 채팅기능을 만들었는데 이게 생각보다 복잡하고 생각보다 간단했다. 프론트와의 협업이 필요하여 서로간의 커뮤니케이션이 매우 중요했다. 두번째로는 그동안 있었던 여러 버그수정이었다. 생각보다 API들의 버그가 몇개 존재하였고 그것들을 빠르게 정리해나갔다. 사실 코딩에 대해서는 어려움이 없었지만 협업이라는 것이 매우 힘들었다. 그 이유는 소켓기능을 담당한 프론트엔지니어와 버그수정을 담당한 프론트엔지니어와의 수면패턴이 달라서 낮에는 소켓, 밤에는 버그수정을 하느라 잠이 매우 부족했다. 하지만 나는 이겨냈다.....나는 팀장이니깐... 쪽잠을 취하며 결국 코드를 완성했고 다음주..
2023.02.10