[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (3주차)

2026. 2. 2. 17:11·온라인강의

드디어 3주차 내용이네요. 이번 3주차 내용은 섹션4 팔로우서비스와 섹션5 게시글 서비스라는  2개의 섹션으로 구성되어 있습니다. 

 

섹션4. 팔로우 서비스 

사용자 인증처리와 팔로우와 팔로잉을 구현하는 설명을 듣는데... 절반도 이해하기 어려웠습니다. 큰 방향은 알겠는데, spring 에 익숙하지 않다보니 코드에 대한 설명 부분은 이해하기가 어려웠습니다. 그래도 일단 익숙하게 하기 위해 팔로우와 데이터베이스 내용도 들었습니다. 

 

프롬프트가 동일해도 생성형이다보니 claude code가 생산한 내용이 조금씩 달랐습니다. 그래도 claude를 믿고 최대한 저자와 동일한 결과를 얻기 위해서 확인하고 프롬프트로 코드를 수정했습니다. 

 

섹션4 프롬프트

docs/에다가 follow, followcount 관련 서비스를 만들 계획을 간단히 적어줘.

현재 모든 엔티티에 createAt, updateAt, deletedAt 을 공통적으로 넣고 싶어. 이 부분 JPA에서 공통적용할 수 있도록 해줘.

 @docs/follow-service-plan.md에서 각 엔티티는 BaseEntity를 상속하게 해줘

팔로우 수 조회를 효과적으로 하기 위해 followCount  엔티티도 같이 만들게 해줘.

followersCount followeesCount로 필드명 바꿔줘

API endpoint  명에서 users 를 다 제거해줘. user 정보는 전달된 쿠키로부터 받을거야.

규칙을 /api/v1/ 이렇게 해줘.

팔로우나 언팔로우 시 원자적 업데이트를 하여 갱신손실 문제가 없도록 문서에 적어줘. 원자적 업데이트 외 내용은 제거해.

@docs/follow-service-plan.md에 따라서 구현해줘 . 코드를 만들 때는 @.claude/skills/spring-api-rules/  를 곡 지켜줘

/codereview

Critical Issues 수정

(user.sh, auth.sh, follow.sh 수행)

Repository 파일들을 조회해보고, 호출되는 쿼리에 적합한 인덱스를 만들고 싶어. 이를 resources/ddl.sql 파일에 CREATE TABLE 과 함께 인덱스 DDL도 정의해줘

현재 docker-compose 파일에 postfreSQL을 추가해주고, 현재 애플리케이션에 연동해줘.

그리고 ddl.sql도 postgreSQL에 맞게 해줘. 주석은 최소로 해줘.

application.yaml, application.yml을 하나로 합쳐줘

모든 delete는 soft delete를 사용하도록 변경해줘.

 

어떻게든 코드가 생성되고 진도는 나가는데, 잘 하고 있는지 감이 오지 않네요.... 

 

여하튼 claude의 힘으로 follow 기능도 구현했습니다. 

 

섹션5. 게시글 서비스

 

쓰기 부하를 줄이기 위해서 raids에 조회수 같은 중요하지 않은 데이터를 모아두고 한번에 쓰기 업데이트를 한다는 것이 흥미로웠습니다. DB의 쓰기 부하를 획기적으로 줄일 수 있기 때문이죠~

 

이어서 게시글 서비스도 동영상 강의를 보면서 따라해보았습니다. 

 


# [AI 다루기] 게시글, 답글, 인용글, 리포스트

게시글 도메인을 만들거야. Post 엔티티에 아래 필드를 만들고, API를 만들어줘. 
Long id
String content
User user
Long parentId
Long quoteId
Long repostId
Integer repostCount
Integer likeCount
Integer replyCount
Long viewCount
Post API와 함께 별도로 Reply, Quote, Repost API도 각각 컨트롤러에 만들어줘.
가능한 별렬로 작업해줘
Reply, Quote, Repost 도 각각의 도메인으로 만들어줘. 대신 post 엔티티만 같이 사용하게 해줘.


인용글 생성시 원본 게시글의 repostCount가 증가하게 코드가 짜져 있어? 인되어 있으면 게시글에 따라 증가하게 해줘. 

code-reviewer를 통해서 코드를 리뷰해서 critical issues, suggestions 등 정리해줘 

critical issues, Warnings, suggestions를 반영해줘.

post 원본의 답글 수, 인용 수, 리포스트 수 등을 올릴 때 갱신손실이 발생하지 않도록 원자적 업데이트하는 로직도 추가해줘.

빌드하고 테스트해줘


(post api에서 실패하면) post.sh  실행 시 성동적으로 실행되는지 확인해줘. post.sh 실행전에는 auth.sh 실행해서 로그인 먼저하면 돼.

현재 모든 컨트롤러마다 아래 로직이 공통되어 있는데 한곳으로 모아줘. ArgumentResolver를 활용하고, @AuthUser 어노테이션을 만들어서 쉽게 세션 정보 안의 유저 정보를 가져올 수 있도록 해줘.
    private Long getUserId(UserDetails userDetails) {
        return userService.getUserIdByUsername(userDetails.getUsername());
    }
    
  # [AI 다루기] 좋아요, 게시글 조회수
  좋아요 도메인과  API를  만들어줘. 필드는 id, userId, postId 로 해줘. 그리고 게시물 좋아요 누를 때, 해당 게시물의 좋아요수도 같이 늘리게 해줘

/codereview

Warnings, Suggestions 수정해줘

빌드하고 테스트해줘

(문제가 있으면) like.sh 를 실행해보고 문제 고쳐줘.

이제 PostViewController에서 조회수를 중가시키는 API를 만들어 줘. 여기서는 아래처럼 Redis의 조회수 변경을 기록해줘야해. 
INCREMENT post:view:{postId}
ADD post:view:dirty_set postId 
그리고 매분마다 작동하는 스케줄러를 만들고, 여기서 SMEMBERS post:view:dirty_set 를 조회하여 이 안에 들어있는 postId의 조회수를 업데이트하도록 만들어줘.
PostViewService 에서 레디스 조회부분을 PostVIewRepository로 추상화해서 만들어서 리팩토링해줘


postview.sh를 실행해보고 문제를 해결해줘.

 

 

 

레디스에서 1분 동안 dirtyset에 모아서 DB를 업데이트 기능도 잘 동작합니다. 

 

실습을 따라하고는 있지만... 스프링에 대해서 익숙하지 않고, 너무 많은 정보가 들어오다 보니깐... 다소 머릿속이 복잡합니다.

 

욕심을 버리고 강의에서 제시한 문제 정의와 해결 프로세스를 최대한 배우기 위해 노력했습니다. 

 

모두들 힘내서 공부해요~ㅋ

'온라인강의' 카테고리의 다른 글

[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션7 타임라인 서비스(4주차)  (0) 2026.02.05
[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션6 미디어 서비스(4주차)  (1) 2026.02.04
[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (2주차)  (0) 2026.01.29
[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (1주차)  (0) 2026.01.28
[인프런 복습] 비개발자 4주만에 수익화 서비스 만들기(섹션4)  (0) 2026.01.26
'온라인강의' 카테고리의 다른 글
  • [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션7 타임라인 서비스(4주차)
  • [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션6 미디어 서비스(4주차)
  • [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (2주차)
  • [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (1주차)
AI강선생
AI강선생
AI강선생의 블로그 입니다.
  • AI강선생
    나의 배움과 성장의 궤적
    AI강선생
  • 전체
    오늘
    어제
    • 분류 전체보기 (59)
      • 온라인강의 (45)
      • 오프라인강의 (2)
      • 독서 (1)
      • 생각과다짐 (6)
      • 도메인 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cursor
    게임기획
    한빛미디어
    FastAPI
    docker
    Python
    국회
    혼공바이브코딩
    챌린지
    java
    오레일리
    길벗
    티스토리
    spring
    PostgreSQL
    유리링
    AI시대
    rustfs
    랭체인
    이지스퍼블리싱
    LangChain
    llmagent
    Claude
    Redis
    AI agent
    claude code
    에이전트
    스프링부트
    인프런
    클로드코드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
AI강선생
[인프런 챌린지] 4주 완성 백엔드 설계 챌린지 (3주차)
상단으로

티스토리툴바