강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

대규모 시스템에 관련하여 질문 있습니다.

해결된 질문

작성

·

58

·

수정됨

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 강의 잘 보고 있습니다.

 

복습하던 중에 궁금한 부분이 있어 질문을 남깁니다.

현업에서 대규모 시스템을 만드는 경우에 헥사고날 아키텍처 + MSA를 사용한다는 것으로 알고 있는데,

MVC 패턴이 아니라,헥사고날 아키텍처를 대규모 시스템에서 더 선호하고 사용하는 이유가 무엇인가요??

 

추가적으로 이건 강의와는 관련이 없는데, 개인적인 질문이 있습니다.

저는 자바 스프링 신입 개발자를 준비하고 있는 학생입니다.

지금까지는 MVC 패턴만 사용하고, 모놀리틱 아키텍처를 사용해서 배포를 진행하고 프로젝트를 해왔습니다.

 

제가 알기로는 학습적으로나 포트폴리오적으로나 필요성을 느껴서 하는 공부가 제일 좋다고 들었습니다. 근데, 최근에는 어떤 필요성을 느끼지 못하면서 대규모 시스템 강의,헥사고날 아키텍처가 중요하다고 하니 강의 등을 듣고 있습니다.

왜냐하면, 본격적인 취업은 내년이고 시간이 좀 남았습니다. 그래서 해당 강의들을 들어두면 언젠가 개인 프로젝트나 현업에서 사용할 수 있지 않을까하고 듣고있습니다만, 제가 사용했던 MVC 패턴의 장단점 등 기본적인 것들도 알지 못하는 상태에서 계속 진도 나가듯이 이런 저런 강의를 듣고 하는게 괜찮을까요?

 

즉, 아직 기본도 잘 모르면서 계속 새로운 걸 배우는 과정들이 괜찮을까하는 걱정이 드네요.
하지만, 한편으로는 CS지식이 너무 방대해서 기초를 다 잡아두고 다음 단계로 넘어간다는 것도 솔직히 엄두가 안납니다. 그래서 우선은 쭉 이것저것 배워두고 나중에 필요하면 다시 찾아보면서 공부하면 되지 않을까 싶은데, 쿠케님은 어떤 방향이 더 괜찮다고 생각하시나요??

 

 

 

 

 

 

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

blackhole124님, 안녕하세요!

오랜만에 질문 주셨군요~

 

현업에서 대규모 시스템을 만드는 경우에 헥사고날 아키텍처 + MSA를 사용한다는 것으로 알고 있는데,

MVC 패턴이 아니라,헥사고날 아키텍처를 대규모 시스템에서 더 선호하고 사용하는 이유가 무엇인가요??

일단 위 내용 먼저 답변 드리면, 대규모 시스템에서 MSA를 사용할 때의 장점은 분명 있고 자주 사용하지만,

MCV 패턴보다 헥사고날 아키텍처를 더 선호하고 사용한다는 것은 전혀 그렇지 않습니다.

물론, 헥사고날 아키텍처의 장점은 있고 저도 복잡한 시스템에서 선호하는 아키텍처이지만,

이에 대한 내용을 제가 여기에서 설명하기엔 너무 방대하고 복잡한 내용입니다.

그래서 상세하게 설명 드리기 어려운 점 양해 부탁드립니다.

장점을 간단하게 말씀 드리면, 비즈니스 로직이 기술 등 외부 의존성들과 격리되기 때문에 테스트나 확장성에 유리해지게 됩니다.(와닿지 않으셔도 괜찮습니다.)

다만, 이를 위한 학습 비용이나 복잡한 구조로 인해 초기 개발 속도가 느려질 수도 있고, 정말 커다란 변경이 생기지 않는 이상 확장성이나 변경에도 딱히 유리함은 없습니다.

객체지향, 클린아키텍처 등 방법론 관련하여 공부해보고(인터넷 검색, 블로그 등으로 단편적인 학습보단, 책으로 차분하게 공부해 보시는걸 추천드립니다.),

추후 현업에서 실무에 적용해보며 와닿으면 충분할 것 같습니다.

다만, 학습하는 입장에서 헥사고날 아키텍처가 무엇인지 알아야할 필요는 전혀 없습니다!

 

추가 질문 관련해서도 몇자 말씀 드려봅니다.

말씀하신대로 필요성이 느껴졌을 때 공부하는게 가장 재미있게 접근할 수 있지만, 이러한 필요성이 느껴지는 맥락도 없이 무작정 공부하는게 쉽진 않을 것 같습니다.

애초에 간단한 애플리케이션 개발은 복잡성도 없고 간단한 프로그램일뿐인데, 공부하는 입장에서 복잡한 대규모 시스템을 경험할 수는 없으니 필요성이 느껴지지 않는다는 건 당연한 이야기입니다.

인력들도 많이 쏟아지고 새로운 지식에 접근하기도 쉬워졌다보니 학습 수준이 점점 상향 평준화되고 있어서, 필요성이 느껴지지 않는다고 하더라도 공부하는게 불가피한 상황이기도 하고요.

하지만 그럴수록 더욱 중요한게 기본기(CS, 알고리즘, 문제 해결 능력)라고 생각합니다.

CS 지식이 방대하다고는 하나, 입문자 입장에서 알아야할 내용은 그렇게 많지 않습니다.

꾸준히 학습하다보면 A에서 공부한 내용이 B에서도 그대로 나오고, 이론들이 유기적으로 연결되는 지점이 느껴집니다.

대학생이시면 강의 잘 들으시고 복습 꾸준히 하시면 충분합니다.

이후에는 실제 개발하면서 새롭거나 부족했던 부분들 하나씩 찾아나가면 된다고 생각하네요.

강의를 통해 새로운 지식을 습득하는 것은 좋으나, 기본기에 대한 공부는 항상 병행하시면 좋을 것 같습니다.

완전히 끝낸 다음에 다음 단계에 개별적으로 넘어갈 수는 없는 것이고요.

개발도 더욱 최적화하고 원리를 이해하려면, 기본기를 알아야할 수 밖에 없습니다.

어차피 기본기 없으면 개선이나 최적화해야하는 지점들을 찾기도 어렵습니다.

그리고, 헥사고날 아키텍처는 지금 학습하실 필요 없습니다.

일단 MVC 패턴으로 제대로된 프로젝트를 진행해보시는걸 추천드립니다.

현업에서도 헥사고날로 구성된 프로젝트보다 MVC로 구성된 프로젝트가 훨씬 많습니다.

 

우선은 쭉 이것저것 배워두고 나중에 필요하면 다시 찾아보면서 공부하면 되지 않을까 싶은데, 쿠케님은 어떤 방향이 더 괜찮다고 생각하시나요??

아무튼, 어느 정도 기본기가 다져졌다면, 저도 위와 같은 방향을 선호합니다. 저 또한 이처럼 공부해왔고요!

기본기가 튼실하면, 새로운 기술도 크게 어려움 없이 배우실 수 있을겁니다!

blackhole124님의 프로필 이미지
blackhole124
질문자

안녕하세요 쿠케님
말씀해주신 내용 감사합니다. 앞으로도 공부하는데 많은 길잡이가 될 것 같습니다 !

0

안녕하세요, 인프런 AI 인턴입니다. blackhole124님.

대규모 시스템 설계에서 ‘헥사고날 아키텍처 (Hexagonal Architecture)‘와 MSA(Microservices Architecture)를 사용한다는 점에 대해 질문해주셨네요. 관련하여 왜 헥사고날 아키텍처가 대규모 시스템에서 더 선호되는지 간단히 설명드리겠습니다.

헥사고날 아키텍처의 장점

  1. 모듈화와 테스트 용이성:

    • 헥사고날 아키텍처는 애플리케이션 코어와 인터페이스(포트와 어댑터)를 분리하여 모듈화된 구조를 제공합니다. 이는 코어 로직을 쉽게 테스트할 수 있게 해줍니다.
    • 의존성을 애플리케이션 바깥으로 밀어내어, 서비스의 비즈니스 로직을 쉽게 변경·확장할 수 있습니다.
  2. 유연한 의존성 관리:

    • 외부 시스템(데이터베이스, 메시지 브로커 등)과의 결합도가 낮아져, 시스템이 커지면서 일어날 수 있는 관리 복잡성을 줄여줍니다.
    • 각종 서비스 외부 종속성을 어댑터 형태로 분리함으로써 여러 환경에 맞춰 쉽게 교체 가능하며, 새로운 기술을 더 쉽게 도입할 수 있습니다.
  3. 변화에 대한 적응력:

    • 비즈니스 요구사항이나 기술 생태계의 변화에 보다 민첩하게 대응할 수 있습니다.
    • 시스템의 특정 부분만 모듈적으로 교체하거나 버전업할 수 있어 유지보수 및 향후 확장에 용이합니다.

헥사고날 아키텍처 vs. MVC 패턴

  • MVC 패턴은 주로 프레젠테이션 계층에 포커스되어 있어 화면 디자인과 사용자 인터페이스 구성에 중점을 두는 반면, 헥사고날 아키텍처는 전체 애플리케이션 아키텍처에 대한 설계를 포함하며 더 전략적인 접근을 제공합니다.
  • 헥사고날 아키텍처는 비즈니스 로직을 중심으로 두고, 외부와의 상호작용을 격리시켜 유지보수성과 확장성을 도모합니다.

유사한 주제에 대한 기존 게시글을 통해 추가적인 정보도 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

질문하기