07. API Gateway 서버 제작 (2)

2024. 11. 11. 22:40·Web/코테 준비용 서비스 만들기

API-Gateway 서비스 상세 내용

1. UserService

UserService는 사용자 인증과 관련된 로직을 담당하는 서비스다. Github OAuth를 통해 사용자 로그인을 처리하고, 인증된 사용자 정보를 관리한다.

  • authenticateUser
    Github OAuth를 통해 로그인한 사용자의 정보를 데이터베이스에 저장하거나 조회하고, 세션에 저장한다.
    OAuthUserService에서 Github에서 받은 사용자 정보를 GithubOAuthAttributeDto로 매핑하여 필요한 정보를 추출하고, UserRepository로 사용자 정보가 이미 존재하는지 확인한다. 새 사용자일 경우 데이터를 저장하고, 기존 사용자는 세션 정보만 갱신한다.
  • getUserInfo
    사용자 ID를 기준으로 데이터베이스에서 사용자 정보를 조회한다.
    UserRepository로 사용자 ID에 맞는 데이터를 찾고, 없으면 null을 반환한다. 조회된 정보는 세션에 저장해서 이후 요청 시 빠르게 접근한다.
  • updateUserAssistCount
    사용자의 특정 작업 수행 횟수를 증가시킨다.
    UserAssistCountRepository로 데이터베이스에 있는 사용자 작업 횟수를 조회하고, 특정 작업의 최대 허용 횟수를 초과하지 않도록 관리한다.

이렇게 UserService는 Github OAuth를 통해 로그인한 사용자의 정보와 세션 관리를 전담한다. 로그인 후 세션에 사용자 정보를 유지하고, 사용자의 작업 횟수 같은 필요한 데이터도 쉽게 접근할 수 있다.

2. AI, Code, Problem, Step Service

Open Feign을 활용해 AI, Code, Problem, Step Service에서 외부 API와의 통신을 관리한다. 각 서비스가 필요한 요청을 보내고 응답을 받아와서 클라이언트에 전달한다.

  • AiService
    • optimizeCode
      클라이언트가 요청한 코드를 최적화하는 요청을 외부 AI API로 보낸다.
      AiApiClient를 통해 외부 AI 모델 서버에 요청을 보내고, 최적화된 코드를 받아 클라이언트에 반환한다.
  • CodeService
    • runCode
      클라이언트가 작성한 코드를 실행하고, 결과를 반환한다.
      코드와 입력 데이터를 받아 비동기적으로 실행하고, 무한 실행을 막기 위해 타임아웃을 설정한다. 실행 중 발생하는 예외는 에러 메시지로 반환한다.
  • ProblemService
    • getProblem
      특정 문제의 정보를 외부 API에서 가져온다.
      문제 ID를 통해 외부 문제 API에 요청을 보내고, 문제 정보를 받아서 클라이언트에 전달한다.
  • StepService
    • getStepDetail
      단계별 문제 목록을 가져온다.
      단계 ID를 기준으로 외부 API에 요청해 단계 정보를 받아와서 문제 목록을 반환한다.

Feign을 사용해서 외부 API와의 통신을 단순화하고, 필요한 데이터를 손쉽게 연동할 수 있다.

 

3. Spring Security

Spring Security는 이 애플리케이션의 인증과 인가를 담당한다. Redis Session을 통해 세션을 관리하고, AOP를 사용해서 세션 유효 기간을 자동으로 연장한다.

  • Redis Session 관리
    Redis를 이용해 세션을 저장하고 관리한다.
    로그인 시 생성된 세션을 Redis에 저장해서 서버 간 세션을 공유할 수 있도록 한다. 이후 인증이나 인가가 필요할 때 Redis에서 세션을 확인하고 사용자 정보를 가져온다.
  • AOP 기반 세션 연장
    AOP를 사용해 사용자 요청이 있을 때마다 세션 유효 기간을 갱신한다.
    SessionTimeoutAspect에서 사용자의 요청을 가로채 세션 시간을 연장해, 세션이 만료되지 않도록 한다.
  • OAuthSuccessHandler & OAuthFailureHandler
    OAuth 인증 성공 및 실패 시 처리를 담당한다.
    OAuthSuccessHandler는 인증 성공 후 세션을 설정하고 로그에 성공 기록을 남긴다. 반대로 OAuthFailureHandler는 인증 실패 시 오류 메시지를 반환해 클라이언트가 문제를 확인할 수 있게 한다.

Spring Security와 Redis, AOP를 통해 인증/인가 및 세션 관리가 원활하게 이루어지며, 이렇게 구성된 인증 구조는 애플리케이션의 확장성과 유지 보수성을 높인다.

저작자표시 비영리 변경금지 (새창열림)

'Web > 코테 준비용 서비스 만들기' 카테고리의 다른 글

08. 마무리!  (1) 2024.11.16
06. API Gateway 서버 제작 (1)  (0) 2024.11.10
05. AI API 서버 제작  (0) 2024.11.09
04. 코드 API 서버 제작  (1) 2024.11.08
03. 스크래핑 API 서버 제작  (0) 2024.11.07
'Web/코테 준비용 서비스 만들기' 카테고리의 다른 글
  • 08. 마무리!
  • 06. API Gateway 서버 제작 (1)
  • 05. AI API 서버 제작
  • 04. 코드 API 서버 제작
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    인스타그램
    REST API
    티스토리챌린지
    백준
    react
    예외
    MSA
    리액트
    spring boot
    chat GPT
    클러스터
    OpenAI API
    클론코딩
    오블완
    Java
    mapstruct
    쿠버네티스
    Entity
    스프링 부트
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
07. API Gateway 서버 제작 (2)
상단으로

티스토리툴바