inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Controller에서 비즈니스 로직 흐름이 나타나는 것에 대하여..

해결됨

제미니의 개발실무 - 커머스 백엔드 기본편

안녕하세요. 결제 부분 강의를 보니 payments API를 보면 컨트롤러에서 주문을 조회하고, 사용 할 쿠폰을 조회하고, 포인트를 조회하고, 조회 된 데이터를 PaymentService로 전달하는 스타일이더라구요. 제가 진행중인 사이드 프로젝트도 커머스가 주제입니다. 제 프로젝트도 처음에는 강의 코드 스타일대로 컨트롤러에서 필요한 데이터를 조합하고, 결제를 처리하는 Service 쪽으로 넘기는 형식이었는데, 이게 점점 결제 기능이 고도화되면서 뭔가 컨트롤러에서 비즈니스 로직의 흐름이 보이는게 맞나? 라는 생각이 들게 되었고 어느 순간부터 웬만한 Controller에서는 1개의 xxxService.method()만 호출하고 이 method가 요청에 대한 비즈니스 로직을 전부 담당하게 되었습니다. @Service class QuestionPaymentService( private val questionOrderGenerator: QuestionOrderGenerator, private val promotionApplier: PromotionApplier, private val orderCouponApplier: OrderCouponApplier, private val paymentCouponApplier: PaymentCouponApplier, private val questionPaymentRecorder: QuestionPaymentRecorder, private val pointCommandAPI: PointCommandAPI, private val eventPublisher: EventPublisher, ) { @Transactional fun payment(command: QuestionPaymentCommand): QuestionPayment { val order = questionOrderGenerator.generateQuestionOrder(command.userId, command.questionIds) val questionPayment = QuestionPayment.create(command.userId, order) promotionApplier.apply(order) orderCouponApplier.apply(questionPayment, command) paymentCouponApplier.apply(questionPayment, command) pointCommandAPI.usePoint(questionPayment.userId, questionPayment.realAmount) questionPaymentRecorder.record(questionPayment) eventPublisher.publish(toEvent(questionPayment)) return questionPayment } } 위 코드는 제 프로젝트의 결제 부분인데요. 강의에서 말씀하신 것처럼 Service가 너무 많은 걸 알게되더라구요. (주문도 생성하고, 쿠폰도 적용하고, 프로모션도 적용하고...) 지금 이 글을 작성하다보니, 갑자기 제 코드가 못생겨보이네요 .. 강의 코드와 비슷한 방식으로 위 코드를 바꿔본다면, 컨트롤러에서는 orderService를 이용해서 주문을 생성하고, couponService, promotionService 등을 이용해서 전처리를 한 뒤 PaymentService을 이용해 실 결제 금액만큼 금액을 지불하도록 하는 로직과 결제 내역을 저장하는 로직만 있을 것 같아요. 반대로 제 프로젝트 방식대로 강의 코드의 payments API를 만들어본다면, Payment를 만들기 위해서 PaymentCreateService와 같은 곳에서, orderReader, ownedCouponReader, pointReader 등을 조합해서 Payment를 생성하는 방식이 될 것 같아요. 결국 Service가 적은 책임만 가지게 된다면, Controller 입장에서는 복잡한 요청을 처리하기 위해선 다양한 Service를 조합하게 되고 Controller가 비즈니스 로직의 흐름을 보여주는 형태가 될 수 있다고 생각이 드는데요. ( 사실 Controller가 비즈니스 로직의 흐름을 보여주면 안된다는 걸 어디서도 듣지 않았지만 뭔가 어색한 것 같아요. ) 물론 계속 말씀하시는것 처럼 정답은 없다는 것은 알지만, 그냥 단순히 재민님은 주로 많은 책임을 가지는 Service보다는 Controller에서 작은 단위의 Service로 조합해서 처리하는 것을 선호하시는지 궁금합니다. 재민님을 지속 성장 가능한 소프트웨어 포스팅으로 알게되었고, 유튜브에서도 많은 도움이 되었어요. 그렇게 얻은 다양한 인사이트들을 개인 프로젝트에도 적용해보면서 다양한 시도를 하고 있는데 마침 제 관심사인 커머스 주제로 강의가 나와서 정말 행복합니다.

  • kotlin
  • spring-boot
  • 도메인
  • dbms/rdbms
  • backend
위고잉업 댓글 1 좋아요 25 조회수 1955

Java: 상속을 정리하는 문제 10개에서 유형 9번

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

유형 9번에서 처음에 Child obj = new Child(); 의 뜻이 Child 타입의 새로운 생성자를 생성하는 것이고, 이 생성자의 자식 class로 갔는데, 생성자가 없고, 부모에도 생성자가 없어서 출력되는 값은 없는 것이고, 그 뒤의 obj.display()코드를 실행해 display의 메서드에서 부모로부터 상속받아 Parent display, Child display가 답이 되는것이 맞을까요?

  • python
  • java
  • c
  • 정보처리기사
백진수 댓글 2 좋아요 0 조회수 67

서비스 단위 테스트 코드 작성

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

MemberFinder 와 같은 유즈케이스 단위로 통합 테스트를 분리 해서 작성하셨는데 단위 테스트의 경우에는 분리를 어떻게 하시나요? MemberService (Query, Modify) 가 없이는 코드가 작성이 되질 않아서 질문 드립니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
생물무 댓글 2 좋아요 0 조회수 119

8강 강의영상 나오지 않습니다.

미해결

Cursor AI로 만드는 생산성 2배 Java Spring 개발

8강 강의영상 나오지 않습니다.

  • java
  • spring
  • 업무-생산성
  • 인공지능(ai)
포비는귀여워(Money_Tree) 댓글 2 좋아요 1 조회수 85

domain 모듈에 entity를 정의한다고 했을때

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요. 궁금한게 있어서 질문 드립니다. domain 패키지에 entity를 위치 한다고 했을때 주석이라고 말씀하신 어노테이션 JPA @Entity를 만들어서 Member로 정의 그리고 mongo DB도 필요해서 @Document를 정의해서 domain 패키지에 위치 시켜 Member로 정의 이처럼 같은 도메인이 서로 다른 DB로 사용 될때 어떻게 도메인으로 정의해야할지 궁금합니다. 그리고 이름이 중복되는 현상도 발생하기도 합니다. 그렇다고 OracleMember, MongoMember로 지을수도 없는것같습니다. 제 생각은 Member라는 도메인이 Domain 패지키에 별도로 나와서 adapter 안에 JPA Persistent의@Entity로 정의된 클래스와 Mongo Persistent의 @Document로 정의된 클래스가 위치 되어야한다고 생각하는데 어떤 의견이신지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
test test 댓글 2 좋아요 0 조회수 119

Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요

미해결

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

챗gpt처럼 프롬프트로 소스만들기만 되고 프로젝트 생성은 보이지않는데 월 결제를 해야 진행 가능한건가요??

  • python
  • 알고리즘
admin 댓글 3 좋아요 3 조회수 560

수업 자료

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요! 영상강의 없이 글로 수업 자료만 기재돼있는건 따로 pdf파일이 없는건가요? 23강 24강 25강같이 수업 자료 라고만 있는 강의들이요!

  • python
  • java
  • c
  • 정보처리기사
은쪼미 댓글 2 좋아요 0 조회수 98

main.py 눌러도 안떠요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

혹시 파이선을 d드라이브 깔아서 그런걸까요?

  • python
spaceno1js 댓글 2 좋아요 0 조회수 120

보충강의 잘못올리신거 같아요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

강의 소개영상인데요?

  • python
spaceno1js 댓글 1 좋아요 0 조회수 89

12:32 반응이 없는데 왜그런거죠?

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

완전 똑같이 했는데

  • python
spaceno1js 댓글 2 좋아요 0 조회수 69

10:40 이 부분이 저는 안떠요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

중요한 부분이라고 하셨는데 진도가 안나가네 요

  • python
spaceno1js 댓글 2 좋아요 0 조회수 84

멀티모듈 초기설정

해결됨

멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]

지금 Swagger 적용하기 보고있는데 Application.kt 파일 을 작성하는데 스프링이 적용이안돼는지 어노테이션 이 원래 빨갛고 노랗게 떠야하는데 안뜨네요 강의보고 따라하는중인데 어떻게해야될지 잘모르겠습니다

  • java
  • spring
  • kotlin
  • mysql
  • spring-boot
김우철 댓글 2 좋아요 0 조회수 119

5:46 저 부분이 안보이는데

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

왜그런거죠?

  • python
spaceno1js 댓글 1 좋아요 0 조회수 60

4:07 글 입력은 어떻게 하나요?

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

(사진)

  • python
spaceno1js 댓글 2 좋아요 0 조회수 44

[교재문의]p.192쪽 풀이 중 궁금점

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 제가 책보면서 공부중인데 코딩을 할 때 아래와 같이 코딩을 하다보니 에러가 뜨더라구요 result = df['차이'].min()에서 ['차이'] 이거를 빼고 하니까 되던데... 컬럼명을 넣고 안넣고에서 어떤 차이가 있는건가요..? import pandas as pd df = pd.read_csv("delivery_time.csv") # df.info() df['실제도착시간']=pd.to_datetime(df['실제도착시간']) df['주문시간']=pd.to_datetime(df['주문시간']) # df.info() df['차이']=(df['실제도착시간']-df['주문시간']).dt.total_seconds()/60 df = df.groupby('앱종류')['차이'].mean() df result = df['차이'].min() print(result)

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jkim8109 댓글 2 좋아요 0 조회수 48

C언어 문자열 인식

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

데이터 형태와 참/거짓 챕터이고 문자 배열로 할당하기 위해서 1:56 보시면 //문자 배열로 할당에서 맨 오른쪽에 \0이 무조건 있어야 문자 배열로 인식이 되는건가요?

  • python
  • java
  • c
  • 정보처리기사
dhkdxo12 댓글 2 좋아요 0 조회수 50

bot03.py 실행시 db 생성이 안 됩니다.

해결됨

공부만 하면 뭐해, 수익화를 위한 코인/주식 자동매매 봇 제작

터미널 화면 첨부합니다.

  • python
  • aws
  • pandas
  • rest-api
  • bitcoin
Gyujin KANG 댓글 2 좋아요 0 조회수 116

정처기2025 2회 3분2초

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

3분2초에 A가 B로 엎어쳐졌다는데 자세한설명도 없이 엎어쳐졌다니깐 왜 바뀐건지 이해가 안갑니다.

  • python
  • java
  • c
  • 정보처리기사
csu3321 댓글 2 좋아요 0 조회수 120

인기 태그

인프런 TOP Writers

주간 인기글