해결된 질문
작성
·
78
·
수정됨
0
rails 같은 경우에는 서비스 계층과 레포지토리 계층이 없는지 궁금합니다. rails로 개발하는 현업에서는 계층을 나누지 않고 개발하는 건가요?
마이그레이션 파일을 만들면서 느꼈던 점은 스키마를 변경했던 부분들을 모두 기록하여 나중에 살펴보기 좋다라는 느낌이 들었습니다. 다만 테이블이 굉장히 많아지고 시간이 지나면서 스키마를 변경 할수록 migrate 폴더에 굉장히 많은 마이그레이션 파일들이 생성될꺼 같은데 이부분에 대해서는 어떻게 처리하는지 궁금합니다.
스프링으로 개발을 했을때는 DB로 가져온 데이터를 DTO 객체로 변환 후 클라이언트에 전송 했는데 rails는 DTO 객체 변환없이 클라이언트에 바로 보내는건지 궁금합니다.
rails에서는 컨트롤러 별로 요청 경로를 관리하는게 아니라 routes.rb에서만 요청 경로를 관리 하는건지 궁금합니다.
감사합니다.
답변 1
0
안녕하세요, 질문 감사드려요! 아래와 같이 답변드릴게요.
1. 서비스 계층과 레포지토리 계층
Rails에서는 Active Record 패턴을 사용해서 데이터 액세스를 직접 모델에서 처리하는 경우가 많아요. 그래서 전통적인 의미의 '레포지토리 계층'을 따로 두지는 않아요.
하지만 비즈니스 로직이 복잡해질 경우, Service Object나 Query Object 같은 패턴을 사용해서 서비스 계층을 나누기도 해요.
2. 마이그레이션 파일 관리
마이그레이션 파일이 많아져도 성능에는 영향을 주지 않지만, 관리가 어려울 수 있어요.
이럴 때는 schema.rb
또는 structure.sql
을 기준으로 기존 마이그레이션 파일을 정리하고, 새로운 베이스 마이그레이션을 생성하는 방법을 사용하기도 해요.
3. DTO 객체 변환 여부
Rails에서는 보통 DTO 객체를 따로 만들지 않고, Active Record 모델을 그대로 JSON으로 변환해서 API 응답으로 보내는 경우가 많아요.
하지만 ActiveModel::Serializer
나 json_builder
같은 도구를 활용하면 Spring에서 DTO를 사용하는 것처럼 특정 필드만 선택해서 변환할 수도 있어요.
4. 요청 경로 관리
네, Rails에서는 routes.rb
에서 모든 요청 경로를 정의하는 게 일반적이에요.
각 컨트롤러에서 개별적으로 경로를 관리하지 않고, RESTful 구조에 맞춰 resources
메서드를 사용해서 자동으로 경로를 생성하는 방식이 보편적이에요.
질문해 주셔서 감사합니다!
답변 감사합니다!