- [ 학습기록/CS 공부 ][DB] 인덱스 (B트리)2024-02-04 00:39:39인덱스란?인덱스는 책의 목차에 비유할 수 있다. 책을 읽을 때 목차를 이용하면 원하는 내용을 빠르게 찾을 수 있듯이, 테이블도 인덱스를 이용하여 데이터를 빠르게 조회할 수 있다.데이터베이스에서 인덱스는 테이블에 대한 검색 속도를 높여주는 자료 구조다. 전체 테이블을 스캔 (full scan) 하는 대신, 인덱스를 참조하여 원하는 결과를 빠르게 조회할 수 있다. B트리이진 탐색 트리(BST)는 데이터를 미리 정렬하여 검색 및 정렬 연산에서 효과적인 자료 구조다. 인덱스는 주로 B트리로 구현되는데, 일반 BST와 비교하여 몇 가지 중요한 차이점이 있다. B트리(Balanced)는 BST를 일반화한 트리로 볼 수 있다. BST의 노드는 최대 두 개의 자식을 가지지만, B트리는 여러 자식을 가질 수 있다. 🌳..
- [ backend/테스트 ][jest] jest 시작하기 (matcher/setup/teardown/mock)2024-02-03 12:59:28jest 란? jest는 단순함에 초점을 둔 자바스크립트 테스트 프레임워크다. 따라서 대부분의 자바스크립트 프로젝트에서 별도의 설정없이 동작할 수 있도록 설계되었다. jest는 병렬 실행 기능을 제공하는데, 이를 통해 여러 테스트 파일을 동시에 실행하여 테스트 수행 속도를 향상시킨다. 뿐만 아니라 이전에 실패한 테스트를 먼저 실행하여 개발자가 변경된 부분에 대한 결과를 빠르게 감지하고 수정할 수 있도록 돕는다. jest의 특징 별도의 설정없이 동작하도록 설계되었다. 여러 테스트 파일을 동시에 실행하여 성능을 향상시킨다. 이전에 실패한 테스트를 먼저 실행하여 빠른 피드백을 제공한다. 테스트 파일의 소요시간에 따라 실행 순서를 재조정한다. matcher matcher는 결과값을 예상된 결과와 비교하는 데 사..
- [ backend/테스트 ][node] jest와 supertest로 단위/유닛 테스트 하기2024-02-03 00:18:21한 줄만 고쳤는데요 😥개발에 제대로(?) 입문한지 얼마 되지 않았지만 테스트가 중요하다는 말을 정말 많이 들었다. 새로운 기능을 개발하느라 항상 테스트를 미루기 바빴는데 이번 포스팅에서 테스트를 진행해야 하는 이유와 테스트를 작성하는 방법을 알아볼 것이다.테스트를 작성해야 하는 이유버그 픽스, 리팩토링 등 좋은 의도에서 코드를 수정했을지 몰라도 개발자의 실수로 잘 돌아가던 코드가 에러를 발생시킬 가능성이 항상 도사리고 있다. 그렇다면 코드가 변경되었을 때 의도한 대로 동작하는지 확인할 수 있는 방법은 없을까?테스트를 이용하면 코드의 신뢰성을 확인할 수 있다. 코드를 수정한 후 기존에 작성해놓았던 테스트 코드가 실패한다면 이는 코드가 제대로 동작하지 않는다는 걸 의미한다. 즉, 테스트는 새로운 기능을 추..
- [ 학습기록/독서 ][Good Code, Bad Code] 2장 추상화 계층2024-02-01 04:05:53추상화로 문제의 본질에 집중하기 미술에서 "추상화"는 실제 대상을 단순화하거나 왜곡하여 본질을 강조하는 예술적 기법을 의미한다. 소프트웨어에서 추상화도 이와 유사한 의미를 갖는다. 추상화는 구체적이고 특정한 것에서 벗어나 핵심적인 특징에 집중하는 것이다. 🧑🎨 : 구체적인 부분은 무시하고 사물의 본질만 다룰 거야 🧑💻 : 세부 사항은 무시하고 핵심 기능에 집중할 거야 커다란 문제를 여러 개의 하위 문제로 쪼개면 한 계층에서는 쉽게 이해할 수 있는 소수의 개념만을 다룬다. 전체적으로 봤을 땐 규모가 큰 문제지만 개별 문제는 상대적으로 그 복잡도가 낮아진다. 가독성 - 모든 세부사항을 이해하긴 어렵지만, 작게 분리된 개념을 이해하는 것은 상대적으로 쉽다. 모듈화 - 계층을 분리함으로써 구현 사항이 다른 ..
- [ 학습기록/독서 ][Good Code, Bad Code] 1장 코드 품질2024-01-24 14:51:47개발자로 진로를 정한 후에 처음으로 내돈내산 한 코딩 관련 서적이다! (전공 서적, 선물 제외) 정말 유명한 도서들이 많지만 굳이 이 책을 고른 이유는 학습한 내용을 프로젝트에 적용하고 싶기 때문이다. 개발 서적을 구매하더라도 현재 진행중인 프로젝트와 맞지 않는 경우, 배운 내용을 곧바로 써먹기 힘들어 흥미가 떨어지고 학습 내용도 휘발된다. 하지만 코드 품질은 어느 프로젝트에나 적용할 수 있기 때문에 나의 수요와 딱 맞아 떨어졌다. 회사의 운명을 결정 짓는 코드 품질 이 책을 읽기 전까진 막연하게 유지보수의 용이성 때문이라고 생각했다. 하지만 코드 품질로 인해 한 기업이 망할 수도 있다. 고품질의 코드를 작성하기 위해서는 많은 노력이 필요하다. 코드 품질을 위해 꼼꼼히 개발하다가 다른 경쟁사의 제품이 먼..
- [ 카테고리 없음 ][etc] 쉘 스크립트 에러 핸들링하기2024-01-23 05:36:26서버 터뜨리는 경우의 수 다 해보기 😵💫 (예비 서버 개발자지만 서버를 터뜨려요)지난 번에는 health check를 안 해줘서 서버를 터뜨렸는데, 이번에는 도커 컴포즈에 오타를 내서 서버를 터뜨렸다!이번 포스팅에서는 배포 스크립트에서 발생할 수 있는 에러를 선별하고, 에러가 발생하면 곧바로 종료하여 잘 돌아가는 서버에 영향을 미치지 않도록 만들어 줄 것이다. 문제의 배포 스크립트echo "The $STOP_TARGET version is currently running on the server. Starting the $RUN_TARGET version." DOCKER_COMPOSE_FILE="compose.$RUN_TARGET-deploy.yml" sudo docker-compose -f "$DOC..
- [ backend/ci•cd ][CD] health check로 서버 상태 확인하기 (Docker Compose/Shell Script)2024-01-21 19:20:27수정할 게 끝이 없네!! 🤪지난 포스팅에서 블루/그린 무중단 배포를 다뤘다. 하지만 무중단 배포임에도 불구하고 신규 어플리케이션에서 에러가 발생하면 중단된다!! (얼레벌레 무중단 배포,,)이번 포스팅에서는 죽은 어플리케이션으로 트래픽을 전환하지 않도록, 어플리케이션의 상태를 확인하는 과정을 넣어줄 것이다. health check🔗 지난 포스팅- [CD] 블루/그린 무중단 배포 구현하기 1편- [CD] 블루/그린 무중단 배포 구현하기 2편health check는 서비스가 올바르게 작동하는지 확인하는 프로세스다. 장애나 문제를 미리 감지하고 예방할 수 있어 안정성을 향상시킨다.health check의 이점조기 감지 및 대응 : API의 이상을 조기에 감지할 수 있어, 잠재적인 문제를 신속하게 대응할 수 ..
- [ backend ][etc] CORS 이해하기 (Feat. *에서 탈출하기)2024-01-21 03:25:24CORS 에러에 부딪히면 항상 origin에다 * 넣어서 해결했는데 드디어 CORS에 대해 공부해보기로 결심했다. CORSCORS란?CORS는 Cross-Origin* Resource Sharing의 약자다. Resource Sharing이 자원 공유인 건 알겠는데 Cross Origin은 뭘까? 크로스 오리진은 서로 다른 출처를 의미한다. 즉, CORS는 서로 다른 출처 간 자원 공유다.*origin : 자원에 접근하는 출처 (프로토콜 + 호스트 + 포트)SOP: Same-Origin Policy😈 origin에다 *를 넣으면 안되는 이유CORS 요청은 보안상의 이유로 Same-Origin Policy에 의해 제한된다. Same-Origin Policy는 다른 출처에서의 접근을 막아 자원을 보호한다. ..