Code Monkey home page Code Monkey logo

popool-server's Introduction

popool-server

인사내역을 거래하고 관리하는 시스템 한이음 프로젝트에서 개발한 MSA 기반 인사내역 거래 시스템을 바탕으로 리팩토링하는 서버입니다.

  • 프로젝트 기간 : 2022.11.-continue

프로젝트를 진행하며 정리한 글

개요

한이음 MSA Project 진행을 했습니다. 이 프로젝트에서 Eureka, API Gateway, Spring OAuth, Redis, Spring Security, Json Web Token AWS S3, RDS, RabbitMQ feign client 등 기술을 공부하고 적용했습니다.

다양한 기술을 사용했음헤도 팀원들이 사용한 기술들을 직접 학습해보고 구현해보고 싶은 욕심이 생겼습니다. 때문에, 직접 리팩토링을 진행하면서, 팀원들이 적용했던 기술들을 공부하고 나만의 기술로 만들기 위해 사이드 프로젝트를 진행하였습니다.

Folder Structure

.
├── p-application
│   ├── ..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── admin..
│       │   │               ├── config..
│       │   │               ├── consumer..
│       │   │               ├── handler..
│       │   │               ├── interceptor..
│       │   │               └── ApiApplication.java
│       │   └── ..
│       └── ..
├── p-core
│   ├── ..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── enums..
│       │   │               └── error..
│       │   └── ..
│       └── ..
├── p-domain-admin
│   ├── ..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── config..
│       │   │               ├── entity..
│       │   │               ├── repository..
│       │   │               └── DomainAdminApplication.java
├── p-domain-consumer
│   ├── ..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── config..
│       │   │               ├── entity..
│       │   │               ├── repository..
│       │   │               └── DomainConsumerApplication.java
│       │   └── ..
│       └── ..
├── p-domain-jwt
│   ├──..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── DomainJWTApplication.java
│       │   │               └── provider.JwtProvider.java
├── p-domain-redis
│   ├──..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── DomainRedisApplication.java
│       │   │               ├── config.RedisConfig.java
│       │   │               └── service.RedisService.java
│       │   └── ..
│       └── ..
├── p-domain-s3
│   ├── ..
│   └── src
│       ├── main
│       │   ├── java.kr.co.popoolserver
│       │   │               ├── DomainS3Application.java
│       │   │               ├── config.AwsConfig.java
│       │   │               ├── dto.S3Dto.java
│       │   │               └── service.S3Service.java
│       │   └── ..
│       └── ..
├── p-internal
│   ├── ..
└── settings.gradle

기술 스택

해당 프로젝트를 수행하며 사용한 기술 스택 및 사용할 기술 스택

  • Java 11, MySQL, Gradle, Spring Boot 2.6.7
  • Spring Security, Json Web Token
  • Spirng Swagger, Spring Interceptor
  • AWS S3
  • Sping Data JPA
  • Redis
  • Querydsl
  • RabbitMQ, Kafka
  • AWS EC2, RDS
  • Docker, Github Actions, nginx

서비스 소개

회원들이 자신의 이력을 올리면, 기업에서 이력을 찾아보는 서비스입니다.

설계 (바뀔 수 있습니다.)

image

API (바뀔 수 있습니다.)

[Consumer Module]

- 회원 API

image

- 이력서 API

image

- 상품 API

image

[Admin Module]

- 관리자 API

image

- Continue...

popool-server's People

Contributors

hongdosan avatar

Watchers

 avatar

popool-server's Issues

Read, Update, Delete Service 로직 구현

목적

기본적인 CRUD를 위해.

상세 내용

  • 이전 PR에 대한 Fix (UserInterface 수정)
  • 본인의 기본 정보 조회
  • 본인의 기본 정보 수정
  • 본인의 비밀번호 정보 수정
  • 본인 이메일 수정
  • 본인 전화번호 수정
  • 본인 주소 수정
  • 본인 회원 탈퇴
  • 본인 탈퇴한 회원 복구

참고 사항

프로젝트 시작

목적

domain 생성

상세 내용

  • 각 서비스들의 패키지 구조 설정 및 Entity 생성
  • User
  • Corporate
  • Inventory
  • Payment
  • Subscription
  • Career
  • Score
  • Grade
  • Common : BaseEntity, Address, Phone, UserRole, Gender (공통으로 쓰일 Class, Enum 생성)

참고 사항

spring boot 2.6.7
Java 11
Spring JPA, MySql, H2

Security, Json Web Token 기능 구현하기

목적

더욱 보안성이 높은 프로그램을 위해.

상세 내용

  • 원활한 API 확인 및 테스트를 위해 Swagger 추가
  • 회원 가입 시 DB에 Password 값이 인코딩되어 들어갈 수 있도록
  • 로그인 기능 로직 구현 및 토큰 발급.

참고 사항

Exam

목적

상세 내용

  • []

참고 사항

회원 CRUD

목적

기본적인 CRUD 틀을 잡을 것

상세 내용

  • CRUD에 필요한 Controller, Dto, Service, Repository 틀을 만들기(기능은 없음)
  • Exception (ErrorCode, ErrorResponse, ResponseFormat, ResponseCode, Exception~)
  • 회원가입 기능 로직 구현

참고 사항

후에 Spring Security, Json Web Token, Exception 해서 기능 하나씩 추가할 것.

Transaction 처리 및 S3 등록

목적

상세 내용

  • User Transaction 처리
  • Corporate Transaction 처리
  • Career, 이미지, 파일 올릴 S3 등록

참고 사항

코드 리뷰 픽스 / Handler 처리

목적

코드 리뷰를 보고 로직 수정하기
핸들러 처리

상세 내용

  • ResponseCode -> ErrorCode로 통일 후 FE를 위해 더 자세히 표시했습니다.
  • UserServiceImpl 여러 Service로 분리했습니다.
  • 그 외 사소한 것들도 픽스했습니다.
  • 핸들러 로직 구현 (JWT, Global)

참고 사항

CI/CD 구축

목적

상세 내용

  • Github Actions
  • Docker

참고 사항

S3 Service Fix

목적

S3 Upload Error Fix

상세 내용

  • Upload Service Fix
  • Delete Service Fix
  • Download Service FIx

참고 사항

Json Web Token, Interceptor, ThreadLocal 적용

목적

CRUD 를 위해 기능들을 로직들을 하나씩 추가 중입니다.

상세 내용

  • 커스터마이징한 JWT Filter 를 생성하여 인가처리를 할 것입니다.
  • 들어온 요청은 Spring Interceptor 가로채어 인가 처리를 먼저할 수 있도록 하고
  • 인가처리가 성공적으로 이루어지면 토큰이 만료되기 전까지 ThreadLocal에 담아두도록 할 것입니다.

참고 사항

기업 정보의 기본적인 CRUD

목적

Interface 활용 ( 일반회원과 기업회원의 공통 서비스를 통일화하기 위함)

상세 내용

  • 공통 Service와 DTO를 만들어 패키지 구조 변경
  • 공통 부분의 기능들 로직 구현
  • 구분하기 위한 Provider 및 Enum 생성
  • 공통되지 않는 기업 회원의 Create Service 로직 구현
  • 공통되지 않는 기업 회원의 Read Service 로직 구현
  • 공통되지 않는 기업 회원의 Update Service 로직 구현
  • 공통되지 않는 기업 회원의 Delete Service 로직 구현

참고 사항

멀티 모듈 구축2

목적

더 나은 프로젝트를 위해

상세 내용

  • 패키지 구조 변경
  • 모듈 구조 변경
  • 의존 분리

참고 사항

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.