JWT 와 Session 시작하기에 앞서, 해당 글에서는 JWT에 대한 구조에 대해서는 자세하게 설명하지는 않도록 하겠습니다. 어느 정도 JWT에 대한 이해가 되신 분들이 해당 글을 읽고 어떠한 인증 전략을 가져가야 하는지 생각해보는 글이 되었으면 합니다. Session 기반 인증 Session 기반 인증이라고 하면서 서버에서는 user에 따른 Session ID를 생성 하고 해당 Session ID를 서버 리스트에 저장을 시켜 요청이 올 때 마다 유저를 인증하는 방식입니다. 위의 Sequence Diagram (이하 SD) 을 보면 Session 기반인증의 가장 큰 특징은 서버에서 저장을 하고 있다라는 것입니다. Token 기반 인증 토큰 기반 인증 방식은 Session과는 다르게 유저에 대한 인증 정..
Elastic Cashe 현재 많은 프로젝트들이 AWS과 높은 종속성을 가지고 있습니다. 여기서 개발자들이 검토해야 하는 부분이 DB에 대한 성능을 어떻게 끌어 올릴 수 있을 것인가 입니다. 성능을 끌어 올릴 수 있는 방법은 다양합니다. DB Scale을 증가시키다. Query문을 최적화 한다. DB에 대한 GET 요청을 분산시킨다. 여기서 개발자는 요청을 분산 시키는 방향이 제일 간단하고 효율적이기에 대체로 사용을 하고 있습니다. 그럼 AWS와 의존성이 높아진 프로젝트에서 어떠한 방식으로 분산 시킬 수 있는가를 고민하게 됩니다. EC2 내부에 새로운 DB를 구축한다. AWS에서 제공하는 서비스를 사용한다. 1번의 경우 EC2 서버 자체에 부하가 증가하기 때문에 그렇게 큰 효과를 보기 어려울 수 있습니다..
시작하기 전 현재 서비스 개발을 하는 부분에 있어서 해당 방식을 적용하려고 하는 이유가 무엇인지 알고 보는 것이 이해하는데 더욱 도움이 된다고 볼 수 있겠습니다. 어떤 서비스든 초기 버젼 개발 시에는 빠르고 간단하게 만들기 위해 개발자가 편한 대로 개발을 하는 경향이 있습니다. 이러한 프로젝트들은 Version 1 출시 까지는 무난히 운영이 될 수 있겠지만 이후 Version 2 부터는 코드를 리팩토링 하거나 새로운 기능을 추가를 한다고 하였을 때 많은 시간을 투자하게 됩니다. 이러한 상황처럼 이후 개발자들이 비효율적인 시간을 줄이고자, 실제로 적용해야 하는 서비스 들을 좀 더 세분화하고자 사용 되는 접근법이 DDD 입니다. 정의 도메인 주도 설계(Domain-Driven Design, DDD)는 소프트..
HTTP vs HTTPS HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 인터넷을 통해 데이터를 전송하기 위한 프로토콜입니다. 주요한 차이점은 보안과 암호화입니다. 보안: HTTP: HTTP는 평문 텍스트로 데이터를 전송하기 때문에 보안이 제공되지 않습니다. 데이터가 암호화되지 않기 때문에 도청이나 데이터 변조와 같은 공격에 취약합니다. HTTPS: HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다. 이를 통해 데이터의 기밀성과 무결성을 보호하고, 도청과 데이터 변조를 방지할 수 있습니다. 암호화: HTTP..
TDD Study 용 기본 Module 더보기 Production 환경 Express Mongoose npm install express mongoose --save Development 환경 Jest Node-mocks-http supertest npm install jest supertest node-mocks-http --save-dev Extensions JestRunner 단위(Unit)테스트 더보기 정의 개발자가 작성한 모듈 단위의 코드를 테스트하는 것. 소스 코드의 개별 단위 를 테스트 하여 준비 여부를 확인. 조건 독립적이어야 한다. (어떤 테스트도 다른 테스트에 의존하면 안됨) 격리 되어져야 한다. 주입을 받거나 model을 받아야 하는 경우 mockup으로 처리 하여야 한다. 목적 프로..
막상 개발을 하다보면 자주 듣게되는 단어 'Agile" (애자일) 자주 들었지만 아리송한 내용으로 설명된 여러 글과 이야기들로 실제로 적용하려고 하면 어떻게 해야 하는지 감이 오지 않습니다. 그렇다면 이러한 방법론을 통해서 어떻게 실제로 적용을 할 수 있는지 한번 알아보고자 합니다. Agile? 먼저 개발자 김철수씨의 이야기를 들어보자. " 안녕하세요. 개발자 김철수 입니다. 최근에 회사에 입사를 하고 하나의 프로젝트를 맡았는데, 전체적인 그림만 그려지고 세부적인 내용이 전혀 없는 껍데기 제안서만 받았습니다 ㅠㅠ 이러한 경우에는 어떻게 해야하나요?" 위의 사연은 실제로 개발자가 자주 겪게되는 상황일 것입니다. 항상 모든 계획이 다 철저하게 짜여지고 설계도 다 되어 있으면 얼마나 행복할까요. 하지만 현실은..