현재 해외에서는 C#의 차세대 트랜디한 아키텍쳐에 대한 토론이 활발함.
JVM 생태계가 전부인 한국에서는 뭐 알 필요도 없는 정보임.
기존 - Clean Architecture (Uncle Bob, 2012)
Domain → Application → Infrastructure → Presentation
4개 레이어를 프로젝트 단위로 분리하는 구조 ㅇㅇ.
의존성 방향을 안쪽으로만 강제하는 게 핵심임.
이건 스프링의 정석 계층형 구조랑 철학이 비슷함.
(요즘은 도메인 피쳐 단위 묶는게 추세이긴 하다만)
요즘 - Vertical Slice Architecture (Jimmy Bogard)
지미 보가드라는 이 양반이 밀고있는 방식임.
이 양반 C# 생태계에서 유명한 사람이고 MediatR 라이브러리 만들었음.
핵심 주장이 "레이어 나누기 ㄴㄴ링", "기능 나누기 ㅇㅇ링"임.
Controller에 뭐 GetGallery, PutGallery ... 이렇게 많은 메소드들 있잖우?
이거 자체가 기능 단위니까 걍 컨트롤러 클래스 없이 플레이 즐기자는 말임.
GetGallery라는 기능 하나를 수직으로 잘라서 그 안에 필요한 거 전부 넣음.
서버리스 느낌으로 애저 펑션이랑 비슷한 느낌 ㅇㅇ.
펑션 하나가 트리거, 로직, 바인딩 다 처리하는 것 마냥 슬라이스 하나가
Endpoint/Command/Handler/Response를 다 가지고 있는 구조 ㅇㅇ.
이 양반의 철학은 결국 컨트롤러의 소멸임;;;;
이 양반이 사짜일지 아닐지는 모르나 일단 철학 자체는 간지임.
근데 이거도 C# 진영에서 오바 떨지말라고 하기도 하고 말 많은 구조임.
AI 딸깍 시각화 ㄱㄱ
(Clean Architecture)
레이어가 폴더가 아니라 ".csproj" 프로젝트 단위로 분리됨.
Domain -> Application -> Infrastructure 의존성 방향.
근데 이걸 컴파일 타임에 물리적으로 강제하는 구조 ㅋㅋ.
엔티티는 아무것도 모르는 순수 C# 클래스로 Domain 프로젝트에만 격리.
(VSA)
레이어 개념 없음.
GetGallery, CreateGallery 같은 기능 하나가 슬라이스 하나. Endpoint/Command/Handler/Response가 한 폴더 안에 수직으로 묶임.
엔티티는 슬라이스들이 공유하는 도메인 폴더 바로 아래에 위치.
(주황색 글자)
근데 VSA 이게 "갤러리에서 뭐 포스트를 참조한다거나 그러면 어케 할건데? ㅡㅡ"
뭐 이런거 커뮤 논쟁에서 이야기 많이 나오고 그럼.
그래서 지금 흐름은 타협한 방식으로 Entities는 기존처럼 다른곳 빼두는 형태로 가는중임.
해외는 C# 쓰는 곳이 많다보니 신규 플젝에 VSA 도입하는 곳 심심찮게 있긴함.
아직 까지는 얼리어답터로 신규 프로젝트 위주로 퍼지는 중인데 이게 레거시 대형 기업에도 넘어갈지가 관전 포인트임.
이런거 도입하다 만약 실제 사용해봤더니 편하거나 좋으면 좋겠다만,
만약 개구리(점프하는 그 양서류 ㄴㄴ)면 그냥 회사에서 트롤되는거임 ㅋㅋ

저런게 뭔 의미인지 싶다. 디자인패턴 결국 개 쓰레기 사상이라는 후기가 대다수인데
ㅇㅈ
이야 씨샵 생태계 떠나고 자바 온지 5년인데 거기 ㅈㄴ 바꼈나보네 개씹레거시 ㅈ같은거 했던 기억 새록하네 ㅋㅋ 직관적으로 볼때 뭔가 소규모는 좋을듯한데 대규모에서도 직관적일지 모르겠다
저거 개 ㅈ같던데
모으면 흩어놓고 싶고, 흩어놓으면 모으고 싶은게 아키텍처의 세상이지 - dc App
합구필분 분구필합 ㄷㄷ
재사용성 존나 갖다쳐버렸네 ㅂㅅ노 ㅋㅋ
그래서 씨샵 내에서도 그거로 말많음. "그럼 클린 아키텍처는 존나 엮이고 복잡해지고 유지보수 어려운데 그게 맞아?" 말하면서 서로 싸움 ㅋㅋ. 중복 부분은 뭐 해결 방안이나 제안 하면서 그럴듯하게 (진짜 그럴듯함) 하여간 ㅈㄴ 싸우고있음. 거기 커뮤 내에서는 뭔가 "사짜/사기"에 가깝게 표현하는 유저가 많음.
근데 재밌는게 VSA 미는 애가 보가드 쟤 말고도 또 유명 라이브러리 만든 고수 개발자 유명 네임드들 여럿이 저 아키텍처가 좋다고 옹호하고 각자 유튜브나 블로그에 아키텍처 더 고도화된 내용 그런거 올리고 있음. 그러다 보니 고수 네임드들이 미니까 이게 양상이 묘해지는거임. "끽해야 원숭이인 니들이 뭘아냐?" 이러면서 VSA 옹호하는 개발자도 많고
당장 생각나는게 금액구하는 api랑 결제 api만 생각해도 계산로직이 퍼져있다는거고 같은거 쓸거면 걍 모듈화해서 함수형 하겠다로 가는건데 별 되도않는 씹소리를
신기한거 ㅈㄴ 많이 나오네
대부분의 디자인 패턴은 카테고리 이론이랑 함수형을 제대로 공부하면 당연히 적용하던거라 일일히 배울 필요가 없지 않음? 수학적으로도 대부분 그 방향으로 엄밀하게 확장되고 있는데 지금 시대에 그걸 애매하게 글로 배우는게 무슨 소용인가 싶네
카테고리 이론 깔짝하고 어떤 도메인은 어떻게 나눠야하는지 배웠다고 착각하는 학식
뭘 잘못 먹은건지 아니면 LLM한테 나데나데 받다가 헛바람 들은건지 모르겠노 이거는
씨샵 쟤낸 ㅈㄴ 신기한 방향ㅇ로 가네
걍 대세면 무조건 거부하는 힙스터 같은데
그냥 슬라이딩할래 나는;;;
클린 아키텍처는 4레이어로 나눳기 보다는 의존성 방향을 Domain -> Application -> Infrastructure 이게 아닌 의존성 역전으로 Domain -> Application <- Infrastructure 이게 주 목적임 클린아키텍처 책에서도 의존성 역전을 강조 하고 Domain Application를 합쳐서 Core로 3레이어로 가는 프로젝트도 있음 대표적으로 Bitwarden 소스코드 보면 3레이어임
니가 작성한 트리 보면 App 레이어에 인터페이스만 두고 인프라 레이어에 구현체를 두는데 이게 의존성 역전 때문에 한다고 보면됨