본문 바로가기

전체 글

(46)
[항해99] 최종 프로젝트 예상 질문 로그인, 토큰 관련 예상질문로그인의 흐름로그인 흐름은 다음과 같이 이루어집니다:사용자가 네이버 또는 카카오 소셜 로그인을 시도합니다.클라이언트 애플리케이션은 해당 소셜 플랫폼에서 인가 코드를 받습니다.애플리케이션은 받은 인가 코드를 서버로 전송합니다.서버는 전달받은 인가 코드를 사용하여 소셜 플랫폼의 액세스 토큰을 요청합니다.받은 액세스 토큰을 사용하여 사용자 정보를 소셜 플랫폼의 API에 요청합니다.받은 사용자 정보를 이용하여 데이터베이스에 해당 사용자를 등록하거나 가져옵니다.사용자에게 로그인 완료 메시지 및 필요한 인증 토큰(주로 JWT)을 전송합니다.이후에는 애플리케이션은 해당 사용자의 요청에 대해 유저 정보를 확인하고, 필요한 권한을 확인하여 요청을 처리합니다.← 레디스 →Q. Redis는 무엇이..
[스터디] 클린 코드 클린 코드- 클린 코드는 유지보수가 쉽고, 다른 개발자가 이해하기 쉬우며, 오류가 발생할 가능성이 낮은 코드를 의미한다.- 클린 코드는 프로젝트의 생산성을 높이고, 장기적으로 개발 비용을 줄이며, 소프트웨어의 품질을 향상시켜줄 수 있다.- 클린 코드를 작성하는 것은 단순히 '좋은 습관'이 아니라, 프로페셔널 개발자로서의 필수 덕목.- 클린 코드를 작성하기 위해서는 명확한 코딩 규칙과 지침을 따르는 것이 중요하다. -> 코드의 일관성을 유지하고, 소프트웨어의 가독성과 유지보수성을 향상시키는 데 도움을 준다. 따라서, 개발자는 클린 코드를 작성하기 위한 다양한 원칙과 기법을 학습하고, 이를 실제 코딩 과정에 적용하는 것이 중요하다.이는 개인의 역량 향상뿐만 아니라 팀 전체의 생산성 강화에도 기여한다.결론적으..
[항해99] WIL 24.04.28 이번주 요약MVP 기능은 전부 완료가 되어서, 각자 역할을 나눴는데 나는 코드 전반적인 valication check와 리팩토링, 북마크 기능 추가, 마이페이지 조회 API 추가 구현, DB, 서버 시간 맞추기 정도를 했었던 것 같다.새로운 기능을 도입을 했던 게 아니라서 적을 만한 것이 많이 없다 ㅠ_ㅠ그나마 이야기 할 만한 것은 시간 변경하는 방법..?MySQL 사용할 때 프론트에서 넘겨주는 시간은 KST, DB와 서버 시간은 UTC였다.이걸 모두 KST로 맞추고 싶어서 JsonFormat도 써보고 도커나 도커 컴포즈 등 timezone도 바꿔봤는데, 전혀 진전이 없었다ㅠㅠ덕분에 한 4일정도를 시달린 것 같은데 의외로 해결 방법이 간단했다. 프로퍼티스와 DB에 타임존을 넣어주는 것...조금 허무하긴 ..
[스터디] JMeter를 활용해서 부하 테스트 해보기 Apache JMeterApache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다.JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다.<p data-ke-size="size16..
[항해99] WIL 24.04.21 JMeter 테스트는 아니고, 작동되는지만 확인을 해봤었는데 토큰이나 body를 입력할 때 값 넣는 부분이 매우 헷갈렸었다..ㅠㅠ Apache JMeter Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다. JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다. 다양한 프로토콜/서버를 테스트할 수 있다. 웹 - HTTP, HTTPS SOAP / REST 웹 서비스 FTP 데이터베이스 (JDBC 사용) Mail..
[스터디] Refresh Token을 Redis에 저장하는 이유와 적용 방법 Redis? Redis는 디스크가 아닌 메모리에 데이터를 저장하는 In-Memory 방식의 데이터베이스다. Key-Value의 형태의 데이터베이스이기 때문에 적은 메모리로도 데이터를 저장할 수 있으며, 작성 속도가 빠르다 Key-Value 형태를 가지고 있기 때문에 키를 알고 있다면 조회 성능이 O(1)까지 나온다는 장점을 가진다 인메모리 DB 방식으로 빠르게 접근이 가능하다 휘발성인 In-Memory DB는 영구적으로 저장될 필요가 없는 Refresh token을 관리하기에 효율이 좋다. 캐시처럼 데이터 만료일을 정할 수 있다. In-Memory In-Memory 데이터베이스는 MySQL과 같은 다른 일반 DB들처럼 SSD, HDD와 같은 보조기억장치가 아닌, 프로세서가 직접 액세스할 수 있는 컴퓨터..
[항해99] WIL 24.04.14 리프레시 토큰 Redis 적용하는 이유 현재 사용중인 MySql에서는 리프레시 토큰을 만료시키기 위해 주기적으로 만료된 토큰에 대한 삭제 요청을 보내거나 스케쥴러를 사용해야하는데 이 작업이 비효율적이라고 생각했다. 그래서 데이터의 유효기간(TTL)을 정할 수 있는 Redis가 효율적이라고 생각해서 적용을 해볼보려고 한다. 추가로 리프레시 토큰은 액세스 토큰을 재발급 하는 과정에서 자주 호출하기 때문에, 더 빠른 인메모리 기반 Redis를 사용하는 것이 더 좋을 것 같다. 저번주 목표 달성 여부 회색+밑줄 : 달성 검정 글씨 : 미달성 파란 글씨 : 반정도 달성 1. 작성했던 코드들의 테스트 코드 작성해보기 2. 소셜 로그인과 리프레시토큰 리뷰해보기 소셜 로그인 부분은 단위테스트 작성이 어려워서 그것을 ..
[스터디] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - Nginx 무중단 배포 무중단 배포? CI / CD만 적용한다면 배포단계에서 애플리케이션이 종료된다는 문제가 있다. 실제 서비스에서 사용자가 서비스를 이용하던 중 갑작스럽게 서비스가 중단된다면 사용자 경험 측면에서 부정적일 것이다. 이 부분의 개선을 위해 무중단 배포를 진행하며, 무중단 배포는 말 그대로 서버를 중단 없이 배포하는 것이다. Nginx를 선택하는 이유? 무중단 배포를 구현하는 방식은 AWS의 ELB, 쿠버네티스, Nginx 등 여러가지가 존재한다. AWS의 서비스를 이용해 무중단 배포를 하는 건 프리티어 계정을 사용하는 대다수의 개발자들에서 부담스러울 수도 있을 것 같다. 과금이 발생해서 여러 리소스를 삭제해야하는데, 그 과정도 번거롭고 삭제해야하는 항목들이 많아 놓치는 부분이 발생한다면 나도 모르게 추가 과금이..