개발자

백엔드 코드를 아름답게 분리하고 싶어요

2023년 01월 25일조회 4,658

최근에 본 강의 영상을 토대로 저만의 어플리케이션을 만들고 있습니다. 강의 영상에서는 API / Service / Database 로 layer를 분리해서 코드를 짰던 것을 보고 저도 나름 적용해보려고 하는데요. 코드를 짜면 짤 수록 뭔가 코드가 비슷하지만 조금은 다른 코드가 점점 늘어나게 되더라구요. 일단은 내 맘대로 작성해보고, 거의 다 완성이 되어갔을 때 리팩토링을 하려고 하는데, 접근방법을 어떻게 하면 좋을 지 의견을 물어보고 싶습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 3

인기 답변

손정현님의 프로필 사진

안녕하세요! 깔끔한 코드 분리는 모든 개발자의 꿈이기도 하죠. 좋은 고민을 하고 계신 것 같네요 :) 우선 고민하고 계신 부분은 오래전부터 많은 개발자들이 고민하고 실험한 분야입니다. 그래서 그런지 깔끔한 코드 분리를 위한 다양한 방법들이 존재해요. 레이어로 코드를 분리하는걸 발전시킨 패턴이 있습니다. 레이어드 아키텍처 (계층화 아키텍처)라고 합니다. 한번 살펴보시면 좋을 것 같아요. 시작점으로 이 글을 보시면 도움될 것 같아서 첨부합니다 - https://hudi.blog/layered-architecture/ 이런 고민에 대해 좀 더 알아보고 싶다면 책 2권을 추천드립니다. - http://www.yes24.com/Product/Goods/77283734 (클린 아키텍처) - http://www.yes24.com/Product/Goods/11681152 (클린 코드) 학습할 때 접근 방법은 사실 정답이 없는 것 같아요. 지금 하고 계신 것처럼, 마음대로 작성해보고 나중에 리팩토링을 진행해보는 것도 좋은것 같습니다!

홍순엽님의 프로필 사진

홍순엽

작성자

인하대학교 컴퓨터공학2023년 01월 26일

제가 원하던 부분을 정확히 써주셨습니다. 너무 감사드립니다.

인기 답변

현구막님의 프로필 사진

비슷하지만 조금은 다른 코드가 점점 늘어나는 건 아름답지 않은 걸까요? 거의 다 완성되어갔을 때 진행하는 리팩터링은 무얼 기준으로 아름답게 바꿀 수 있을까요? 아름다운 분리는 무엇일까요? 아름답다라는 건 어떤 걸까요? 질문자님 스스로가 아름답다는 표현의 정의를 내릴 수 있어야 정말 아름다운 분리가 가능할 것 같습니다. 더 나아가서 꼭 분리가 필요한지 고민해보실 수 있을 것 같아요. 질문자님께서는 API / Service / Database 로 레이어를 분리하는 이유에 대해 알고 계신가요? 흔히들 아키텍처와 패턴을 학습하며 “이렇게 짜야 객체지향스러워.” 라는 코드에 자주 노출되다 보니 맹목적으로 비슷한 형태의 코드를 작성하고 “아름답군.” 라는 자기만족에 빠지는 것 같아요. 개발자들이 레이어를 분리하고, 도메인을 분리하고, 아키텍처를 학습하고, 패턴을 공유하는 모든 이유는 지금 코드를 짜는 내가 조금의 불편을 감수해서, 다음에 내 코드를 수정하는 다른 사람(먼 훗날의 자기자신)을 위해서라고 생각해요. 애플리케이션 특성에 알맞는 아키텍처를 적용해서 효용성을 끌어올리고, 코드를 수정할 때 사이드이펙트가 퍼져나가지 않도록 레이러와 도메인을 분리하고, 패턴을 만들고 공유해서 같은 학습수준을 갖춘 뒤 서로 읽기 쉬운 코드를 작성하고… 코드를 수정하는데 필요한 비용을 아껴 다른 곳에 몰두하고자 하는 선대 개발자들의 고민들입니다. 모두 유지보수와 관련되어 있습니다. 질문자님만의 애플리케이션을 먼 훗날 유지보수 할 필요가 있나요? 어제 짠 뭔가 비슷하지만 조금은 다른 코드가 오늘 유지보수에 방해 됐나요? 혹시 더 잘 짜여지는 부분은 없었나요? 마땅히 불편함이 느껴지는 부분이 없고, 내가 기대하는 동작을 성실히 수행하는 코드라면 이미 너무나 아름다운 코드인 것 같아요. 어제 짠 코드를 읽고 컨텍스트를 파악하는데 시간이 소요되고, 한 부분을 수정하면 여러 곳에서 사이드이펙트가 발생할 때 ‘이런걸 보완할 방법은 없을까…’ 생각을 떠올리면서 아키텍처나 디자인 패턴을 접하면 뛰어난 학습효과를 누릴 수 있을 것 같습니다. 관련해서 제 생각을 정리한 글이 있습니다. 도움이 되시면 좋겠네요! https://hyeon9mak.github.io/consider-oop/

서동민님의 프로필 사진

일단 자기가 이쁘다 생각하는데로 쭉 짜보시는걸 추천합니다 무슨 처음부터 완벽한걸 바라는건 도둑놈이고 어차피 짜봐야 아 이런 모양이 더 이뻣을텐데 하고 다시 바꿔보면 됩니다 그렇게 바꿔보다가 다른 사람들은 어떻게 했나 한번씩 보면 아 나도 저렇게 짯는데 또는 이걸 이렇게 짜면 이런 문제가 생길텐데 ? 하고 시야가 생깁니다. 그러니 그냥 쭉 짜보신 뒤에 리펙토링을 하는 것을 전 추천드입니다. 리펙토링만큼 열받으면서 스스로 얻는게 많은것이 없거든요 처음부터 완벽하게 하는 사람 없습니다. 그냥 마음 가는데로 일단 짜보고 다 만든 후 이부분은 이랬는데 아니었네 ? 하면서 게속 바꿔보세요 레이어로 나누니 마니 하는것도 다 그 고생하다가 나온겁니다. 그리고 그걸 정말로 이해하려면 그러한 상황들을 게속 만나보는게 좋다 생각합니다 ~

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!