- 2025년 1학기 앱티브 백엔드 스터디
- 무엇을 만들어 볼 것인가 -> 기술 블로그(플랫폼)
- 프론트엔드 없이, 백엔드 API만 구현
- 하지만 프론트엔드가 있다고 생각하면서 구현!
- 2주에 한 번씩 모여서:
- 각자 구현해 온 코드 리뷰
- 다음 모임까지 구현해 볼 기능 정하기
- 구현해 볼 기능에 필요한 최소한의 요구사항 정하기
- 기술 블로그 플랫폼을 위한 Spring Boot 기반의 REST API 서버
- Spring Boot
3.4.4
- Spring Web
- Spring Security
- Spring Data JPA
- MySQL
9.2.0
- Spring Boot
- 백엔드 서버의 역할에 대해 고민해볼 수 있었음
- DB의 중요성 (좋은 DB 설계)
- 달리는 차의 바퀴를 바꿀 수 있는가? 처음부터 좋은 설계를 가져가는 것이 중요하다
- PK 유추 가능성을 배제하기 위해선 Randomness 필요
- Auto Increment(e.g.
@GeneratedValue
)는 실무에서 안 쓴다고 함
- Auto Increment(e.g.
- 예외 처리, 로깅
- 사용자에게 예외 발생 이유를 너무 정확히 알려주는건 위험할 수도.. (그렇다고 아무런 정보도 안 주면 안 된다!)
- 서버 단에서는 정확한 로그를 남기되, 사용자에게는 일반화된 정보를 제공
- 왜 필요한지, 어떻게 하는 것이 좋을지를 느낌. -> 공부
- Layer의 분리, Layered Architecture
- Controller - Service - Repository
- 상위 계층은 하위 계층에 대해 알아도 되지만, 하위 계층이 상위 계층에 대해 알면 안 된다!
- 추상화, 추상화..
- A 주소로 이런 정보들을 담은 요청을 보내면, 이런 정보들을 담아서 응답해주겠다
- B 서비스로 이런 요청을 보내면, 이런 응답을 주겠다
- 도메인 정보를 노출시키지 않도록 DTO를 사용해야 함!
- Controller - Service - Repository
- DB의 중요성 (좋은 DB 설계)
- Spring, Spring Boot Framework의 완성도에 놀람
- 싱글톤 패턴 적용, 객체 생명주기 관리 및 의존성 주입, HTTP 요청/응답, 상태 코드, 트랜잭션, 비동기 지원, ...
- 학습 동기부여가 됨
- Spring Boot에서의 Best Practice가 뭘까?
- 더 잘하고 싶다. 내가 봐도 코드가 너무 지저분하고 불편하다.
- API 문서화 부족
- ASCIIDOC, SWAGGER 같은 문서화 도구 사용법을 공부해보기
- 테스트 코드의 부재
- 아직 테스트코드를 어떻게 짜는지 모른다..
- 추후에 개인적으로 공부해서 보충해보기
- 데이터 검증 로직의 부재
@Valid
를 통해 검증할 수 있을 것 같은데, 공부해보기
- Java 언어 자체에 대한 이해도 부족
- 예외가 어디서 터지는지, 어떤 예외를 던지는지, 어떻게 처리해줘야 하는지 잘 몰랐음
@RestControllerAdvice
어노테이션을 통한 예외 처리 배워서 적용해보기- Optional<> 객체를 전혀 활용하지 못하고 있다
- 다음번에는 orElseThrow()를 적극적으로 활용해보기
- 람다, 스트림 활용법도 공부하기
- DB 지식 부족
- DB 설계가 엉망임
- 어떤 필드가 필요한지, 어떤 방식을 사용해야 할 지, ...
- 연관관계? 단방향 | 양방향 | 연관관계 없이?
- 실무에서는 연관관계 매핑을 잘 사용하지 않는다고 한다 (확장성 문제가 있음)
- 어떤걸 Primary Key로 사용해야 할까?
- UUID? ULID? Snowflake ID? TSID?
- JPA 인터페이스에 대해 잘 몰랐음
- save(), find*(), ...
- 페이지네이션
- Pageable 객체를 파라미터로 넘겨주면, 알아서 잘 최적화된 페이지네이션을 수행해준다고 함
- 공부를 하자
- DB 설계가 엉망임
- 아직도 정말 부족하지만, 스프링 프레임워크에 대해 조금은 감을 잡은 것 같다
- 다시 짜면 훨씬 잘할 수 있을 것 같다. DB 설계, DTO 설계부터 차근차근 다시 해 보고 싶다
- 꼭 처음부터 다시 짜 보기!
- 회원가입, 회원정보 수정, 탈퇴
- 글 쓰기, 글 수정하기, 글 삭제하기
- 댓글 달기, 대댓글 달기 (Depth는 1까지만)
- 대댓글이 달렸는데, 원래 댓글이 삭제될 경우?