1. 항해 및 DEV LAB 소개
https://hanghae99.spartacodingclub.kr/
항해에는 취업리부트코스, 프론트엔드, 백엔드 AI의 다양한 코스들이 있습니다.
2024년 9월1일 시점에 코테스터디가 3기가 끝나갑니다.
개발자 소사이어티적인(?) 스터디모임도 있네요
이 항해에서 주관하는 항해 DEVLAP 강의 행사 연사분은 시니어3분 주니어 2분이셨습니다.
그 중에 가장 인상적이었던것은 허재 연사님의 클린 아키텍처 : 무한 성장하는 시스템의 비밀이었습니다.
항해플러스 백엔드과정의 허재 코치님인데 항해 웨비나에 코테강의도 올리셨군요...
https://hanghae99.spartacodingclub.kr/webinar/coding-test
선릉역 인근 지하1층 빅플레이스에서 하던데.. 가보니 스파르타코딩클럽 소재한 건물 지하1층이더군요.
2. 주니어 연사님의 Git과 AWS 강의
주니어 정성훈 님의 Git강의는 SquashMerge 와 Rebase 등 코드추적할 수 있는 깃 전략에 관한 공부 후기였고,
또 다른 한분 유제환님의 클라우드의 고가용성과 장애 대응관련 AutoScaling, Serverless, ECS, ECK등에서 traffic 대응 관련이고 관련자료는 하기 첨부합니다.
JeHwanYoo/hanghae-dev-lap-ha-dr: 클라우드로 무장한 고가용성 및 장애복구 비법 (github.com)
3. DEVLAB의 하이라이트 : AI와 자동화, 책임분리, 클린아키텍처
[1] AI와 자동화로 주니어 개발자 키우기
인프런 CTO 이동욱님은 향로라는 예명으로 개발바닥 유투버로 활동중이셔서 영상으로 자주 뵈었는데,
https://www.youtube.com/@devbadak
실물로 뵈는건 처음이었습니다. 기술보다 동기부여되는 인재를 선호하시고, AI는 오픈소스의 모든 언어를 학습하기 때문에 오픈소스 관련 봇을 만들어서 실무에 많이 활용한다고 하시네요. 뭐 문서 보안적인 문제는 LLM을 활용해서 보완하신다고 하고요.
AI와 자동화로 주니어 개발자를 키우는 것은 시니어 개발자 대상이기 때문에... 사실상.. 항해의 주 target인 신입 및 주니어에 해당하는 강의는 아니었습니다.
https://www.youtube.com/live/v2icwh-nyl4
최근에 우테코에서 생성 AI 똑똑하게 일하는 법 영상을 올렸더군요. 참고하면 좋을 것 같습니다.
2. 책임분리의 마법 : 깔끔한 폴더구조 만들기
그리고 프론트엔드에서의 책임 분리를 다루신 테오님이 계셨는데...
음... 저는 프론트 전문이 아니지만 프론트를 좀 알아서 흥미있게 들었습니다.
FSD아키텍처 : 폴더를 만들 때 기존 역할 중심만이 아니라, 관심사중심의 의존성 단방향이 책임 분리라는 키워드의 핵심이었습니다.
그리고 고려 할 것으로 무엇이 변하고, 무엇이 변하지 않는가 입니다.
관심사는 수평,수직,데이터흐름에 따라 나뉘고 상태관리도 계층분리적으로 하는데...
어쨌건 떠오르는건, 교본이 아니라.. 어떤 한 장수가 한 말입니다.
내게 전쟁터와 장수를 알려달라 그러면 내가 전략기획 할 것이다.
3. 클린아키텍처 : 무한성장하는 시스템의 비밀
그 다음으로 무신사의 허재 연사님이 나오셔서 클린아키텍처 강의를 하셨는데,
자 구글에서 검색해서 나오는 것중... 티스토리와 velog를 자기는 거른다고 하십니다.
미디엄 블로그가 보이는데 저런거나 기업블로그나 영어로 된 외국블로그를 보신다는 뜻이겠네요..
Hiring ONLY seniors is the worst policy in the software industry (substack.com)
이동욱 연사님이 강의하실 때 인용하신 이런 글들만 보고 싶다고 하시는 것 같습니다....
음... 결국 ChatGPT오픈 시점 3년을 앞선 미국빅테크들이 오픈한 내용들만 참고하고 싶고, 앞서가고 싶다.
이렇게 받아들였습니다.
어쨌건 제일 인상적이었다는 것은 이 클린아키텍처라는 것이, 계속해서 개발자들이 생각해온 개념이고, 또 저도 생각해본 개념이기 때문에 강의를 흥미롭게 들었습니다.
일단, 고전적인 클린아키텍처 그림을 들고 나오셨습니다.
백엔드는 프론트와 다르게 이미 책임분리가 controller,service,repository등 잘되어 있다고 테오님이 말씀하셨는데.. 밑에도 얼핏 보입니다.
https://daryeou.tistory.com/280
어쨌건 객체지향의 SOLID원칙과 더불어... 우리는 멋진 알함브라궁전을 원하면서 설계하지만 결국 키메라같은 혼종을 만들어 내니까... 멀리생각하지 말라고 하셨습니다. 뭐 좀더 적절한 표현은 주니어서부터 너무 완벽하게 하려 하지 말라인것 같습니다. 왜냐하면 멀리보지 말 꺼면 항해DEV에서 인프런 CTO이동욱 강사님의 강의를 멀리보는 측면에 듣는 것이 유용하기 때문입니다. 뭐 당장 한다면 쉽지 않겠죠?
그리고 객체지향설계에서 서로 다른 의견을 예시로 들으신게 있는데, 저는 허재 코치님이 말씀하신게 공개적으로 말할 때는 일반화시켜 말하는게 보통이기 때문에 좀더 적절한 것 같습니다.
이게 무슨 말이냐면..
책임분리의 단방향의존은 기본으로 깔고, Domain에서 Component쪽으로 책임일부라기 보다 추상화된 도메인을 구체화 시킨 것을 말합니다.
예약기능을 예로 들면, 일단 콘서트예약기능을 만들 다고 할 때, concert라는 폴더를 만들게 되면 콘서트는 예약에 의존하게 됩니다. 그래서 나중에 확장하게 되면 문제가 생깁니다. 호텔예약, 식당예약, 티켓예약.. 예약기능을 확장하게 되면 결국 아키텍처구조에 문제가 생깁니다.
뭐, 콘서트예약프로젝트에 한정하여 예약기능을 생각하면 콘서트와 예약은 별개의 폴더로 분리할 수 있고 의존성도 따라서 분리할 수 있습니다. 즉 콘서트예약프로젝트에 한정한 예약기능관련 객체지향설계라고 할 수 있습니다.
보편적인 예약기능설계의 객체지향설계로 구분 할 때, 전자는 조건이 달려 있으므로 보편적이고 일반적인 객체지향설계가 아닌 그냥 그 프로젝트내에서의 객체지향설계입니다.
그래서 허재코치님이 말씀하신게 객체지향설계 확장염두에둔 설계에 따른다면.. 이 설계가 보편적이고 일반적인 객체지향적인 설계라고 해야 한다고 생각합니다.
이게 제가 듣고 정리한 Domain에서 Component와의 관계를 생각 하면서 클린아키텍처적인 설계의 핵심이라고 생각합니다. 이게 알함브라궁전을 생각하면서 키메라를 만들지 않기 위한 설계를 설명하고 싶으신 것이라고 보고요.
또한, 말씀하신대로 Software개발자는 Hardware개발자보다 좀더 말랑말랑하게 개발을 할 필요가 있기 때문이라는데에도 전적으로 동감하고요.
보호해야할 부분은 보호하고, 확장해야 하는 부분은 확장하고.. 개발시 제일 신경쓰이는 부분이고.. 이것은 설계구조에 영향을 크게 받습니다.
콘서트와 예약폴더를 분리 시키지 않으면, 예약기능이 추후 확장시에 초기에 설계할 때 예약 entity에 사용자정보, 예약키생성, 예약생성, 부가정보추가에서 부가정보 추가에만 넣으면 되서, 사실상 말씀하신대로 확장되어도 if문만 넣으면 되는 것으로 끝납니다.
네트워킹 시간에도 클린아키텍처와 책임분리에 관한 것을 토론했는데 나름 유익했습니다. 요즘 백엔드에 MSA 등 핫한 것들이 많고, 전화기, 삐삐, 핸드폰, 스마트폰, 앱 ,LTE, 5G, chatgpt 등 거의 3년 주기로 혁신적인 제품들이 나타나는 시대에, 객체지향설계와 그 중에 특히 클린아키텍처와 책임분리라는 개념을 다시금 정리할 수 있는 귀한 시간이어서 감사 했습니다. 또한 간식으로 나온 디저트들이 아주 맛있고, 계속 관리해주는 분이 있는 것도 놀랐고, 물도 풍부하게 비치되어 있어서, 아주 몸도 마음도 흡족한 시간이었습니다^~^
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
백엔드와 테스트 주도 개발 자판기편 (2) | 2024.09.02 |
---|---|
이벤터스 월간 볼트 X 커피챗 : 토스증권, 라포랩스, 스윙 (2) | 2024.09.01 |
코테, 포폴에 밀리는 OCJP(OCAJP, OCPJP)와 프로그래머스 아이패드 이벤트 (0) | 2024.08.01 |
스프링시큐리티6(OAuth2)의 속도, 자원절감, 보안향상, 권한조정의 이점 (0) | 2024.07.21 |
알고리즘 기초 정리 (0) | 2024.07.20 |