분류 전체보기
온보딩의 마무리 그리고 새로운 시작(NestJS & Prisma)
온보딩의 마무리 그리고 새로운 시작(NestJS & Prisma)
2024.11.04목차주제 선정요구 사항참고한 문서DB SchemaProject StructureAPI추가로 공유할 만한 내용마무리 주제 선정사내 노션을 확인하던 중, 도서 관리 문서를 발견했고, 해당 문서를 서비스화 해서 DB 로 도서 대여 히스토리 등을 관리하면 좋겠다는 생각이 들었습니다. 요구사항사내 노션의 도서 관리 문서에 존재하는 피쳐들을 그대로 이관할 수 있도록 구현하는 것을 최우선 순위로 하였습니다.로그인 기능도서 등록(구매 요청)도서 상태도서명도서 분야대여자신청자도서 상태값 변경등의 피쳐들이 존재합니다. 참고한 문서NestJS + Prisma 를 이용하여 Back-end Server 를 구현하였고, 앞으로 주로 사용하게 될, NestJS 와 Prisma 에 대한 정확한 내용을 파악하고자, 공식 문서를 참고..
Legacy를 이전할건데, 테스트 코드를 작성하자고?
Legacy를 이전할건데, 테스트 코드를 작성하자고?
2024.08.06제목을 조금 자극적으로 써봤습니다.여러분은 테스트코드란 무엇이라고 생각하시나요?제가 소프트웨어 엔지니어로 일을 시작하고나서, 저에게 가장 큰 깨달음을 준건 "테스트코드" 입니다.대부분의 회사에 그렇듯 제가 재직중인 회사에도 Legacy 프로젝트가 존재합니다.여전히 Core 한 로직들이 Legacy 프로젝트에서 동작중이죠. 최근에 작성된 프로젝트들의 경우에는 테스트코드 커버리지가 꽤 높습니다.하지만, Legacy 프로젝트의 경우 테스트코드 커버리지가 거의 0에 가까웠습니다. Legacy 프로젝트는 코드를 읽고 완전한 로직을 파악하기까지 꽤나 많은 시간이 필요합니다. 코드가 서로 얽혀있고, 모듈화 되지 않았기 때문입니다. 그리고 통합 테스트 도구의 부족으로 FeatureTest, 그리고 UnitTest 조차..
너 CORS 설정 해줬어? (Cross-Origin Resource Sharing)
너 CORS 설정 해줬어? (Cross-Origin Resource Sharing)
2023.06.22필자는 CORS 개념을 얼핏 들어보기만 했을뿐, 잘 몰랐엇다. 친구가 우연히 한 질문을 이해조차 못하는 나였고, 곧바로 CORS에 대해서 공부했다. 😂 이번 글에서는 CORS 개념을 이해하고 정리한다. CORS (Cross-Origin Resource Sharing)정의우선, 위키피디아에 CROS를 검색해보았다.CORS는, 웹 페이지 상의 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있도록 허용하는 메커니즘이다. 하지만, cross-domain 간의 요청은 기본적으로 Same-Origin Security Policy 에 의해 기본적으로 금지된다.(CORS를 지키면 SOP를 위반하더라도 예외적으로 공유가 가능 하다는 것.)쉽게 이야기하자면, 웹 생태계에는 다른 출처로의 리소스 ..
Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)
Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)
2023.06.19Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation) 문제 상황1. 유효기간이 긴 Refresh Token이 탈취된 경우-> 이 경우는 간단히 Refresh Token Rotation을 떠올릴 수 있다. 하지만 아래의 문제까지 커버가 가능할까?2. 탈취한 Refresh Token으로 정상 유저보다 먼저 Access Token을 재발급 받는 경우-> Refresh Token Rotation을 적용 해도, 정상유저보다 먼저 Refresh Token을 재발급 받으면 어떻게 해야하나?3. 토큰이 탈취된 경우, 한 명의 사용자에 Refresh Token이 여러개 생성되는 경우-> 여러개 생성된 Refresh Token을 가지고 각각 Access Token을 발급받을 수..
Redis를 사용하는 이유 (feat. Refresh Token)
Redis를 사용하는 이유 (feat. Refresh Token)
2023.06.18왜 Redis를 사용하는가? Redis는 key-value 쌍으로 데이터를 관리할 수 있는 데이터 스토리지이다. 데이터베이스라고 표현하지 않은 이유는 기본적으로 Redis는 In-Memory 로 데이터를 관리하므로, 저장된 데이터가 영속적이지 않기 때문이다. Redis는 Remote Dictionary Server의 약자로 키(Key) - 값(Value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이다. 데이터가 HDD나 SDD가 아니라 RAM에 저장되어지기 때문에 데이터를 영구적으로 저장할 수 없는 대신, 굉장히 빠른 액세스 속도를 보장받을 수 있다. 빠른 액세스 속도와 휘발성 이라는 특징으로 보통 캐시의 용도로 Redis를 사용한다. Refresh Tok..
Access Token의 문제점과 Refresh Token
Access Token의 문제점과 Refresh Token
2023.06.17Access Token의 문제점 사용자의 잦은 로그아웃 경험 다음과 같이 가정하자. A라는 서비스가 있다. A라는 서비스에서는 Refresh Token을 사용중이지 않다. Access Token만을 사용하여 사용자를 인증/인가 한다. A서비스의 Access Token 유효기한은 24시간, 즉 하루다. 로그인을 한 이후 하루가 지나면, A 서비스의 사용자는 A 서비스에서 로그아웃 되는 경험을 하게 될 것이다. 그렇다고 Access Token의 유효 기간을 길게 하자니, 바로 뒤에 이야기할 보안 문제가 발생한다. 보안 문제 사실 Refresh Token을 사용하는 가장 큰 이유가 아닐까 싶다. JWT 직접 만들어보며 이해하기 와 세션 기반 인증과 토큰 기반 인증(feat. Authentication 과 Au..