게시글
질문&답변
댓글 생성, 삭제 시 게시글의 댓글 수 증감 로직 질문
안녕하세요, 당황한 너구리님현재 CommentService 에서 댓글 뿐만 아니라 게시글에 관한 책임이 함께 있는 상황인데요.서비스가 커져감에 따라 발생할 수 있는 유지보수성 문제를 잘 지적해주셨네요. 실무에서 책임을 분리하는 방법으로는1) 가장 간단하게는 PostService 에 댓글수를 증가하는 메소드를 만든 뒤, CommentService 에서 이를 호출하는 방법이 있습니다. 이렇게 되면 CommentService 가 PostService 를 의존하게 되는데, 그 반대로도 의존하여 순환참조 되지 않도록 개발 내부 규칙을 두어 한 방향으로만 의존할 수 있게 강제하면 좋습니다. 2) 반대로, PostService 에 댓글 생성 메소드를 만든뒤, CommentService 의 댓글 생성 메소드만 호출하도록 만들어도 됩니다.PostService createComment() Post 조회 및 검증 CommentService.createComment() 호출 Post의 댓글 수 증가 및 저장PostService 를 비즈니스 플로우 진입점으로 정해놓고, CommentService 는 간단하게 댓글을 저장하는 식입니다. 즉, 게시글, 댓글이 동시에 사용된다면 진입점은 항상 PostService 로 규칙을 정하는 겁니다. 이를 통해 비즈니스 로직에 통일성을 부여하고, 위에서 언급한 순환참조 문제도 없게 됩니다. 3) PostService, CommentService 위의 상위 계층을 만들어 이곳에서 두 로직을 조합합니다.가령, CommentCreationUseCase 를 두어 추상화된 게시글, 댓글 통합 처리를 담당하게 하면 됩니다.이를 통해 각 서비스는 자신이 맡은 도메인 로직에만 집중할 수 있고, 복잡한 트랜잭션이나 비즈니스 규칙은 CommentCreationUseCase에서 일관성 있게 처리할 수 있습니다. 제가 선택지를 여러개 드렸는데, 이 외에도 도메인 이벤트 발행 등 다양한 방법이 있을 수 있습니다. 강의에서는 간단한 로직을 다루고 있다보니 CommentService 에서 모든 작업을 처리하고 있습니다.개인적으로는 현재 서비스 수준에서 과하지 않게 필요한 정도로 책임을 분리해주면 좋다고 생각합니다. 감사합니다.
- 1
- 1
- 18
질문&답변
https 설정 질문
안녕하세요 김태우님!먼저 번거로우실텐데 질문 남겨주셔서 감사합니다.직접 설치하여 실행시키는 방법과 도커를 사용하는 방법 중 고민하시고 계신데요. 어떤 것으로 하든 상관은 없습니다. 다만 저희가 애플리케이션을 도커로 구성했고, 이미 환경이 마련되어 있으니 이 docker compose 에서 nginx, certbot 을 함께 관리하셔도 됩니다. 단, 애플리케이션을 재실행하거나 종료할 때 nginx, certbot 도 함께 종료되지 않도록 주의해주시면 됩니다.이렇게 한번에 구성을 하면 보기쉽고 관리가 편하다는 장점도 있지만, 반대로 nginx, certbot, spring boot 가 모두 엮여있다보니 하나만 잘못되더라도 실행에 문제가 생길 수 있는 단점도 있습니다.그래서 docker compose 안에 하나로 묶지 않고, 각각 도커 설정을 만드셔서 각각 실행하시는게 관리하기 편할 수도있습니다.현재 추천하는 방법은 개발단계이니 하나의 도커 컴포즈에 묶어서 빠르게 배포해보시고, 서비스가 커지면 분리하여 각각의 서비스를 고도화해보시는게 좋을 것 같습니다.감사합니다.
- 1
- 2
- 37
질문&답변
섹션 5-26. AWS EC2 서버 배포 파트 질문입니다.
안녕하세요, 김병진님!먼저 번거로우실텐데 질문해주셔서 감사합니다.1) Error: connect ECONNREFUSED IPv4:8080 라는 에러는 서버(AWS)가 클라이언트(Postman)의 연결을 거부했다는 뜻입니다. 특히 해당포트(8080)의 연결을 거부한 것이니, 강의에서 설명드렸던 보안그룹설정에 문제가 없는지, 잘 적용되었는지 한번 확인해주세요. 2) 500 Internal Server Error 이런 에러가 왔다는건 1번 문제는 해결되었다는 뜻이예요. 즉, 8080포트로 연결은 성공했는데, 서버 내부로직에서 무언가 문제가 발생해서 '내부 서버 에러' 라고 응답을 내어준거예요. 이 때는 서버에서 어떤 문제가 발생했는지 로그 확인이 필요합니다. GET /api/posts/1 를 호출했으니, 일단 id: 1 을 가진 게시글이 존재하여야 조회가 가능합니다. 이런 데이터를 가지고 있는지 확인해보세요.그래도 잘되지 않는 다면, 로그를 확인해보세요. 도커로 실행했으니 도커 로그를 확인하면 됩니다. docker logs 여기서 에러를 확인하고 해결해보세요. 잘 풀리지 않으면 해당 에러를 가지고 다시 질문 주시면 감사하겠습니다.감사합니다.
- 1
- 2
- 39
질문&답변
강의내용 중 질문드립니다.
안녕하세요 경인님,질문을 위해 여러 자료와 설명 감사드려요. 강의에 나오는 로그는 아마 SQL 쿼리 로그일텐데요.spring.jpa.show-sql: true설정을 application.yaml 파일에 설정하셨었다면 정상적으로 출력되었을 거예요. 질문자님 두번째 시도에서도 환경변수로SPRING_JPA_SHOW_SQL=true를 등록해놓았기 때문에, 로그가 잘 출력되었을 거구요. 사용하신 이미지에 어떤 설정값이 있는지 확인이 어려워 적절한 판단은 못하겠으나 위 설정값이 있는지 확인해보시면 좋을것같아요.그리고 로컬에서 먼저 실행해보시고 잘되시면 ec2에 배포해서 테스트해보시면 확인이 쉬울거예요.감사합니다.
- 1
- 1
- 69
질문&답변
jakarta persistence 플러그인은 intellij ultimate에서만 사용가능하다고 나오네요.
안녕하세요 gydo75 님!강의에 도움되는 피드백해주셔서 진심으로 감사합니다. 강의자료에 반영해놓겠습니다.감사합니다. (25/7/16 수정)jakarta persistence 플러그인은 강의에서 사용하고 있지 않습니다. 그래서 별도로 설치할 필요가 없습니다. 감사합니다.
- 1
- 2
- 60
질문&답변
다운받은 강의자료 압축풀기가 안되요
맥에서 압축한 파일이 윈도우에서 깨지는 현상이 있었습니다.문제해결해서 강의자료 다시 올려놓았습니다. 감사합니다.
- 1
- 2
- 66
질문&답변
다운받은 강의자료 압축풀기가 안되요
안녕하세요 불편을 드려 죄송합니다. 임시로 구글 드라이브에 올려놓았으니 확인부탁드립니다. https://drive.google.com/drive/folders/1k5AA_Z0B0dPaoiuUybdHAcwF1W-p4gYY?usp=sharing 파일 다운로드 문제는 추후 문제를 조치하겠습니다.감사합니다.
- 1
- 2
- 66
질문&답변
내부호출 : 자기자신 주입
이미 한참전에 메뉴얼에 적혀있었네요 확인도 안하고 ^^;; 빠른 답변 감사드립니다!!
- 4
- 2
- 806