본문 바로가기

ExpressJS

Chapter5 - Session & JWT 1. Session과 JWT 개념 Session과 JWT(JSON Web Token)은 모두 사용자 인증 및 식별에 사용되는 기술입니다. 세션은 사용자가 로그인하면 서버에서 세션을 생성하고 사용자의 상태 정보를 서버에 저장합니다. 클라이언트는 서버에 저장된 세션 정보를 통해 인증을 유지합니다 JWT는 사용자가 로그인하면 서버는 JWT를 발급하고 클라이언트에게 전달합니다. 클라이언트는 이 JWT를 갖고 서버에 요청을 보내며, 서버는 JWT를 검증하여 사용자를 인증합니다. 세션은 서버에 상태를 유지하므로 서버 부하가 발생할 수 있고, 세션을 사용하려면 서버가 중앙 집중식으로 상태를 관리해야 하는 점을 고려해야 합니다. JWT는 토큰이 탈취될 경우 보안에 취약할 수 있습니다. 또한, 토큰의 크기가 크고, 한 .. 더보기
Chapter4 - Redis 1. Redis란? Redis의 가장 큰 특징은 메모리에 데이터가 저장된다는 점입니다. 때문에, 디스크에 저장되는 다른 Database들에 비해서 처리속도가 빠르다는 장점이 있습니다. 하지만, 메모리에 저장되는 데이터이기 때문에 휘발성이고, 영구적 저장을 위해서는 스냅샷 (RDB)과 로그 파일 (AOF) 방식을 사용해야만 합니다. 이러한 이유로 일반적으로는 다른 DB에서 조회로 인한 부하 문제를 보완하기 위해 사용되는 경우가 많습니다. 또한, Redis는 다양한 데이터 형태를 지원합니다. 다음은 데이터 형태와 추가, 조회, 삭제 방법입니다. 문자열(Strings) 해시(Hashes) 리스트(Lists) 집합(Sets) 정렬 집합(Sorted Sets) 추가 SET key value HSET key fie.. 더보기
Chapter3 - DB연결 1. ORM ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간 데이터 상호 작용을 단순화하는 기술입니다. 이를 통해 데이터베이스와 코드를 연결하는 작업이 간편해지고, 코드를 더 읽기 쉽게 만들어줍니다. 성능 및 복잡한 쿼리 작성 문제에 대한 고려가 필요하다는 단점이 있습니다. Node.js ORM 라이브러리에는 Sequelize, Bookshelf, Prisma 등이 있는데, 저는 Sequelize를 사용해 보려고 합니다. 2. DB 세팅 데이터베이스를 연결시키기전에 데이터베이스 서버를 띄우고 샘플 데이터를 import하는 사전작업이 필요합니다. DB는 MySQL를 사용하려고 하는데, Docker를 이용해서 서버를 띄웠습니다. 자세한 내용은 아래.. 더보기
Chapter2 - 프로젝트 구조 1. 프로젝트 구조에 대한 고찰 해당 고찰은 NodeJS Best Practices를 기반으로 작성되었습니다. 우리는 일반적으로 nodejs서버의 프로젝트 구조를 아래와 같이 MVC 모델에 맞추어 개발해 왔습니다 하지만 NodeJS Best Practice에서는 높은 의존성으로 인해 확장과 분리가 어려워 해당 구조를 권장하지 않고 있습니다. 이를 해결 하기위해 아래와 같은 '모듈화'구조를 권장하고 있습니다. 물론 저도 이러한 구조가 정말로 정답에 가까운 구조인지, 장점이 뚜렷하게 느껴지는 구조인지 확답할 수는 없습니다. 또한 해당 프로젝트의 규모가 커지는 것에는 한계가 있기 때문에 그 장점을 입증하기에는 다소 어려울 수 있습니다. 하지만 우선은 위와 같은 구조로 프로젝트를 구성해보려고 합니다. 2. 구현.. 더보기