- Видео 109
- Просмотров 272 568
제미니의 개발실무
Южная Корея
Добавлен 15 июн 2022
무계획 무편집 생각나는 대로 주절주절 개발 실무 이야기
모든 내용은 한 방향성/케이스일 뿐 진리의 케바케가 있다는 점 참고 부탁드립니다 :D
모든 내용은 한 방향성/케이스일 뿐 진리의 케바케가 있다는 점 참고 부탁드립니다 :D
2024 돌아보기 (feat. 2025 목표)
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D
모든 내용은 한 관점일 뿐, 정답이 아닙니다!
진리의 Case-By-Case 가 있다는 점!
모든 것은 Trade-Off 가 있다는 점!
명심해 주세요!
모든 내용은 한 관점일 뿐, 정답이 아닙니다!
진리의 Case-By-Case 가 있다는 점!
모든 것은 Trade-Off 가 있다는 점!
명심해 주세요!
Просмотров: 503
Видео
Reader, Writer 쓰지말자 (feat. implement layer)
Просмотров 3,1 тыс.16 часов назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
공통 모듈 만들어야할까? (feat. exception, logging)
Просмотров 3,5 тыс.14 дней назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
객체의 책임/역할 로직의 흐름 나누기
Просмотров 2 тыс.21 день назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
서비스 설계와 조회 기능 고도화
Просмотров 2,3 тыс.28 дней назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
Enum VS 공통 코드
Просмотров 3,9 тыс.Месяц назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
개발자 신입/이직 시 주의할 점 / 적응 잘 하는 법
Просмотров 5 тыс.Месяц назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
[사랑니 특집] 마이크 자랑 + 잡담
Просмотров 380Месяц назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
개념 영역별 DB 접근 방법
Просмотров 1,2 тыс.Месяц назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
불변구조 테이블의 장단점을 생각해보자!
Просмотров 9182 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
개념의 급수를 느껴보자
Просмотров 1,1 тыс.2 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
현실에서 개발 실마리 찾은 썰 (feat. 대출 연체 개념)
Просмотров 9112 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
지속 성장 가능한 의 의미 + 백종원 같은 개발자가 되자
Просмотров 2,2 тыс.2 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
Kotlin JPA Entity ID 선언 전략
Просмотров 1,2 тыс.3 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
쓰레기통을 만들자
Просмотров 1,7 тыс.3 месяца назад
봐주셔서 감사합니다! 구독과 좋아요 댓글은 힘이 됩니다. :D 모든 내용은 한 관점일 뿐, 정답이 아닙니다! 진리의 Case-By-Case 가 있다는 점! 모든 것은 Trade-Off 가 있다는 점! 명심해 주세요!
한 개의 프로젝트에 SpringBootApplication은 몇 개여야 할까?
Просмотров 1,6 тыс.4 месяца назад
한 개의 프로젝트에 SpringBootApplication은 몇 개여야 할까?
인프콘2024 발표 후기 (feat 토비님, 영호님 발표 후기)
Просмотров 1,8 тыс.4 месяца назад
인프콘2024 발표 후기 (feat 토비님, 영호님 발표 후기)
효과적인 이벤트 발송 방법 (feat. Transactional Outbox, Polling, Async)
Просмотров 1,7 тыс.5 месяцев назад
효과적인 이벤트 발송 방법 (feat. Transactional Outbox, Polling, Async)
My 개념 지옥 - QnA :: 많은 엔티티들을 한번에 조회해야하는 경우
Просмотров 2,6 тыс.5 месяцев назад
My 개념 지옥 - QnA :: 많은 엔티티들을 한번에 조회해야하는 경우
ServiceImpl 쓰지 말자 feat. interface를 소중히
Просмотров 4,8 тыс.6 месяцев назад
ServiceImpl 쓰지 말자 feat. interface를 소중히
이렇게 꾸준히 하신다는 것 자체가 너무 대단하십니다. 영상 퀄에비해 구독자랑 조회수가 너무 적은 것 같네요. 내년에는 입소문타서 흥하는 채널이 되기를..!
1만 기념 오프라인 모임 기대가 됩니다
왜 구독을 안누르지 ?😢
구독자 수 지금이 저점이네요. 아마 같은 영상 여러번 보는 사람이 많은 것 같아요! 조금 길어도 많이 돌려보게 됩니다.
제미니님 덕에 회사 내 멀티모듈 프로젝트 운영 관리 하는데 있어서 많은 인사이트 얻었고 실제로도 적용한 부분이 몇개 있곤합니다. 덕분에 꽤나 많이 꼬였던 프로젝트가 그나마 조금은 볼만해졌네요.. ㅎㅎ 앞으로도 개선해야할것들이 많이 남긴 했지만요! 2024년도 남은 이틀 마무리 잘 하시고 2025년에는 가정에서나 일에서나 모든면에서 더욱더 원하시는 일 잘 되시길 바라겠습니다.^^ 미리 새해 복 많이 받으세요!
제미니님 쵝오
1등 댓글!
크지 않은 규모의 프로젝트에 주니어 1명과 중간급 1명이 투입되서 개발하는데 프로젝트를 이끌어 가는 중간급이 시작부터 모노레포 + 클린아키텍처를 도입하는걸 봤는데요, 주니어 1분은 레이어드도 잘 모르시던 분이었어요 결국 그 프로젝트는 2인으로 시작했으나 커밋은 중간급분만 거의 혼자 하고 있고, 그분 나가시고 그 프로젝트를 감당할 분들이 없어서 결국 레이어드로 갈아 엎어버리는 경우를 옆에서 지켜보면서 많은걸 느꼈습니다 ( 저는 프론트라 옆에서 지켜봄 )
ㅜㅜ... 회사에게도 참 슬픈 일이고 개개인들에게도 슬픈 일 같습니다. 저도 한 두번 본게아니라 여러모로 안타까운 일 같습니다
예전부터 쭉 보면서 정말 많은 인사이트를 얻어갑니다. 아직 주니어라 많은 부분을 이해하기엔 힘들지만, 저도 영향을 받아 지속 성장 가능성에 대해서 중요하게 생각하게 됐는데 그 앞에 함께를 붙이니 많은 것들이 어렵게 느껴졌습니다. 그래서 요즘은 함께 지속 성장 가능한 소프트웨어를 만드는 법, 혹은 함께 지속 성장 가능한 소프트웨어를 만드는 팀이 되는 법에 대해 많이 생각하게 됩니다 :).. 남은 한 해도 잘 마무리 하시고 항상 건강하시길 바랍니다
소프트웨어는 절대 혼자서 만들 수 없기에 적어주신 것 처럼 함께를 계속 고민해야합니다😃 이해가 안가시는 부분이 있는 것을 떠나서 계속 고민하신다는 것이 아주아주 중요한 부분이고 바람직한 모습 같습니다👍 저는 정답을 말하는 사람이 아니니 쭉 고민하시면서 본인만의 지속 성장을 구축해보시길 추천드립니다!! 봐주셔서 감사하고 내년도도 화이팅 하시길 바라겠습니다😀
repository pattern과 그보다 벗어나는 넓은 범위의 읽기 dao에 대한 로직을 분리해서 사용했을때에 대한 이야기가 맞을까요? 뭔가 도구레이어, reader,writer라는게 본적없는 말이다 보니까 덜 와닿는 부분이 있네요 그리고 implementation layer는 구현계층이 맞지 도구레이어라고 하면 오히려 혼란줄거 같네요
repository 나 dao 관련 된 얘기는 아닙니다 ruclips.net/video/pimYIfXCUe8/видео.html 궁금하시다면 위의 영상이 도움이 될 수도 있을 것 같아요 (아닐 수도 있구요) 도구레이어는 제가 임의로 지정해서 쓴거라 못 들어보신게 당연한 것 같고, reader writer도 용어 자체가 중요한 건 아닙니다 팀/회사 마다 저런 레이어나 계층이나 구성 도구들에 대한 규칙을 유연하게 가져가며 생각을 많이 해야한다는게 핵심이죠 그리고 implementation layer 라고 한적은 없습니다 implement(명사:도구) layer 로 지칭했고 굳이 저 헷갈리는 단어를 쓴 사유는 compoent layer 라고하니 사람들이 spring @Component 를 생각하더라구요 근데 여러모로 혼동이 있는 것 같아서 단어는 바꿀까합니다. 결과적으로 이것 또한 용어나 단어 자체가 중요한 건 아니고 그것이 필요한 배경과 내용이 중요한거니까요. (다만 이해에 대한 혼동을 줄이기위해 한글을 쓰는게 나을 수도 있겠다 싶긴하네요)
안녕하세요 재민님 채널을 알게된지 얼마 안되었는데, 실무 경험이 부족한 제게 큰 도움이 되는 것 같습니다. 항상 감사합니다. 쩌스트라는 프로젝트를 하신다길래 검색해서 봤는데 open api로 도서 데이터를 활용하시는 것으로 보이더라구요. 혹시 재민님은 도서 데이터를 배치 돌려서 내부 db에 저장하는 형태로 구현하셨을까요?? 저도 도서 관련 개인 프로젝트를 하고 있는데, 처음에는 제 db에서는 isbn값만 관리하려다가, 다건 조회나 책정보를 함께 가져오는 상황이 많아서 서버로 요청이 들어왔던 isbn에 해당하는 도서정보는 외부 api 호출해서 db에 쌓고 있으면 호출 없이 정보를 반환해주고 있거든요. 외부 데이터를 어떤 방식으로 관리하는 게 좋을지 고민이 많아 댓글 남기게 되었습니다 영상으로 설명해주신 내용이 지금 제가 하는 작업에 많은 참고가 되었습니다 감사합니다
도움이 되셨다면 다행입니다😃 쩌스트의 겅우는 배치까진 필요없는 상황이라 사용자가 도서 등록 시 바로 처리하도록 해둔 상황입니다, 그리고 open-api 없이 yes24 사이트를 아주 간단히 긁어서 처리하도록 해두었습니다ㅎㅎ 하시는 프로젝트가 어떤 처리를 하는지 모르겠으나 특별히 처리를 더 해야할 것이 있다면 배치를 사용하셔도 될 것 같습니다
@@geminikims 자세한 설명 감사합니다! 행복한 크리스마스 보내세요
역할과 책임..!! 점진적 개선... 한번에 완벽할 수 없다 😮😮 긴영상 귀하네요 오늘도 잘 보고 갑니다 😊
언제나 고민하고 점진적 개선!!!😆 항상 봐주시고 댓글 주셔서 감사합니다!
오늘도 쓰지말자 시리즈 잘봤습니다 ㅎㅎ 저도 물론 제미니님의 글을 보고 인사이트를 얻었지만, 기본적으로 '지속적, 성장가능한' 이라는 목표가 있고 그럴 가능성이 있는 프로젝트를 진행할 때 추가적인 레이어를 도입해야 한다고 생각했습니다. 그리고 레이어를 도입해서 인프라 - 비즈니스 간에 의존성을 낮추어 비즈니스 로직이 변경되야 하는 이유(ex. 기본적인 요구사항의 변경)가 적어도 외부에 의해서 변경되면 안되겠다고 생각해서 implement 레이어를 도입했습니다. 좋은 영상 감사합니다 ~
충분히 이해하시고 고민하시고 사용하시는 것 같아서 너무 좋네요!👍 봐주셔서 감사합니다!
OOP 에서 말하는 도메인모델들을 구현 레이어에 놓는다 라고 이해했습니다 OOP 의 중요성을 오늘도 느끼고 있습니다
맥락상 상당히 유사하다고 볼 수 있느나, 사실 제가 설명하는 방향성 기준으론 OOP를 떠나서 비즈니스를 복잡하지 않게 하기 위한 “도구(요소,속성,재료 등 뭐로든 표현가능)를” 를 구축 할 수 있다는 것이 핵심이긴 합니다! 다만 이 것 자체를 잘 따져보면 설명하신 것과 유사하긴합니다 😀 봐주셔서 감사합니다!
저도 구현 레이어인줄 알았는데 아니었군요..부끄럽네요 여러모로 반성하게 되는 영상이네오 감사합니다!
부끄러우실 필요는 없습니다!! (그리고 저도 혼동을 드리는데 일조를 했다보니ㅎㅎ.. 연대책임이죠..!) 봐주셔서 감사합니다!😀
작은 회사에서 레이어 컨벤션을 만들어가는데 항상 큰 인사이트를 얻습니다. 배워가는 걸 "고민하면서" 쓸 수 있도록 노력해야겠네요.
도움이 되셨다면 다행입니다! 말씀 해주신대로 항상 고민하면서 쓰는게 가장 중요한 핵심인 것 같습니다!!
오늘도 잘 보고 갑니다 : >
봐주셔서 감사합니다!
핵심은 무지성으로 만들지말고 프로젝트 상황에 맞춰 사용하자네요. 그리고 다른 영상에서도 공통적으로 전달하시려는 메시지가 "소프트웨어" 이기 때문에 그 환경, 프로젝트에 맞게 설계하고 구현하자가 맞는거 같네요. (정답은 없다!) 오늘도 좋은 인사이트 얻고 갑니다.
맞습니다!! 무지성 절대 금지!!🫡 소프트웨어는 정말 상황이 모두 다르고 정답지가 없는 영역이기 때문에 적어주신 댓글에 100% 공감합니다! 알차게 정리된 댓글 감사드리고 봐주셔서 감사합니다!
좋은 영상감사합니당 :) 설득의 근거가 아니라 핑계거리를 찾는 사람이 많은 것 같아요
맞습니다😢 많이 안타까운 부분이죠..! 항상 댓글 주시고 봐주셔서 감사합니다!
common의 저주는 꼭 기억해둬야겠네요 호호호..
커먼을 쓸땐 꼭꼭!! 유의하며 써봅시다!
안녕하세요 제미니님 항상 영상 즐겨보고 있는 구독자 1인입니다 ㅎㅎ 말씀하신 내용중에 나혼자 개발하는게 아닌, 함께 일하는 구성원들과 환경에 따라 유지보수가 용이하게 구조를 가져가야한다는 말이 너무 공감되서 글 남겨요! 과거에 부끄럽지만 함께 일하는 동료분들의 눈높이에 맞추기 보다 잘못되어있는 패키지 구조가 있다면 자체적으로 바꿔보는 등 여러가지 시도를 많이했었는데 연차가 쌓이고 돌이켜 생각해보니 제가 떠나도 과연 제가 변경하거나 추가했던 구조를 문서화 해두더라도 유지보수할 수 있는 환경이었나? 라고 생각하면 제대로 고려를 못한것 같아 반성하게 되더라구요 ㅠㅠ 이번 올려주신 영상을 통해 다시한번 되돌아보고 다짐하게 되는 계기가 되는 영상인것 같아요 항상 좋은 내용 제공해주셔서 감사합니다 ! ㅎㅎ
누구나 그렇듯 계속 반성하고 회고하면서 나아지는게 핵심 아닌가 싶습니다! 봐주셔서 감사드리고, 도움이 되었다면 다행이에요! 정성담긴 댓글 감사드립니다!!
스타트업에 1년정도 근무한 입장에서 너무 공감이 가네요.. 그런데 혼자 끙끙대지 않고 질문을 바로바로 했을 때 이것을 같이 고민해주는 사람이 아무도 없는 경우가 많아 힘드네요.. 회사 분위기도 중요한 것 같습니다. 나름대로 혼자 여러방면으로 고민하고 질문을 해도 돌아오는 대답은 "나도 몰라요 구글에 검색해보세요"밖에 없었고, 잘 모르는 부분에 대해서 능력으로 평가하기도 하더라구요. "이전회사에서 ~ 이렇게 했다"가 안좋다는 것은 굉장히 와닿네요.... 제가 많이 당하고 있기 때문에.
맞습니다 결국 회사 분위기와 동료들의 상태(?)도 상당히 중요한 부분이죠!! 좋은 내용과 공감 감사합니다! 당하고 계신다니...😢 화이팅입니다!
안녕하세요! 백엔드 개발을 공부하고 있는 취준생입니다! 사이드 프로젝트 경험밖에 없어 영상과 같은 모듈 구조를 처음보는데 모듈마다 어떤 기능을 담당하는지, 모듈들이 합쳐져 하나의 서버가 되는지 아니면 각 모듈별로 서버가 있는지 궁금합니다!
ruclips.net/video/Opj5uCIeCVY/видео.html 이 영상 먼저 참고하시고 git repo 참고해보시면 될 것 같아요~
@ 정말 감사합니다!! 연말 잘보내세요!
안녕하세요 재민님 좋은 영상 감사합니다! 영상속에서 2가지 질문이 있어서 댓글을 남기게 되었는데요! 1. 만약, 영상속 예시의 QnA에서 요구사항으로 QnA List가 필요할 경우에는 List<QnA> 를 만들기 위해서 Question과 Answer 리스트를 각각 jpa로 조회하고 조합(mapper)하는 방식으로 사용하시는 걸까요?! 2. 1의 상황에서 추가 요구사항으로 Question의 Provider와 Answer의 Provider 가 id값이 아닌 username이 필요하다면, Answer와 Question에서 필요한 Provider의 id 값들을 추출하여 (ex. Set<Long>) Provider 정보를 조회(ex. findAllByIds)하고 mapper를 통해 조합하여 QnA 리스트를 만드는 방식을 사용하는 걸까요??? 항상 좋은 영상 다시 한번 감사합니다!! (__)
1,2번 모두 맞습니다! 결국 모든걸 jpa로 푸는 것 보다 적절한 관계 기반으로 어플리케이션 코드를 더 활용하고 테스트하는 접근 방식입니다! 다만 예시인 만큼 연관관계성에 따라 적절히 조율 하시는게 중요합니다! (가급적 oneToMany는 아껴주면 더욱 좋음) 도움이 되었다면 좋겠네요! 봐주셔서 감사합니다!
@@geminikims 영상 덕분에 어떻게 "풀어 갈 것인가?" 에 대해서 많은 고민을 하게된 것 같네요! 좋은 답변 감사드립니다 !!
내가 만든 소프트웨어가 살아있다는 라는 말이 뭔가 뭉클하네요.ㅎㅎㅎ 개인의 성장도 중요하지만, 급여를 받는 입장에서 회사구성원을 위한 배려도 중요하다고 배우네요 감사합니다 : >
맞습니다 ㅎㅎ 두가지 다 밸런스가 좋으면 참으로 좋겠지만요!! 봐주셔서 감사합니다!
서비스 로직에서 사업용 아이템들이 대부분.. 정리되어야 하는데 현실은 기본적인 로직들이 마치 서비스인것마냥 ... 널부러지죠
맞습니다! 그리고 생각보다 그 냄새를 알아챘을때가 늦는 경우가 많아서 항상 아쉬운 것 같습니다. 그래서 계속 코드를 관망하는게 중요한 것 같습니다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ진짜 회상하시고 참으면서 말씀하시는게 느껴지네요ㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋ........ 열심히 내적갈등하며 참았지만 새어나오는 것들은 잡을 수 없었습니다ㅎㅎ 재밌게 보셨다면 다행입니다!
솔직히 퇴근때 걸으면서 듣기만 할때가 많은데 개발자 라디오처럼 해도 좋을만큼 목소리도 좋고 이해도 잘되용
듣기라도 할 정도라도 되서 다행이네요ㅎㅎ 좋게 봐주셔서 감사합니다!
저도 이 부분 고민이 많았는데 영상 올려주셔서 감사합니다. 항상 잘 보고 있습니다. ㅎㅎ
도움이 되었다면 다행이네요! 봐주셔서 감사합니다!
항상 차분하고 자세한 설명 잘 듣고 있습니다. 좋은 말씀 감사해요.😀
차분한지는 모르겠지만ㅎㅎ;; 좋게 봐주셔서 감사합니다! 😀
🎉공감합니다. 자신이 작성한 공통기능이 사방팔방으로 퍼졌을때 조그마한 변경사항으로 수없이 뒤엎어 볼때 비로소, 난 공통의 저주안에 있구나 란걸 오랜후에 깨닳게 되는것 같습니다. 어디선가 본 내용을 상기시키게 되서 고맙네용.. 질문이 하나 있습니다. Kotlin, TS 기반 개인라이브러리(maven: kt-support, npm:ts-support)를 dart 패키지(pub.dev:dart_support)로 마이그레이션 중인데, 제가 사용하는 공통같은 base 패키지 이름이 'support' 인데, 꽤나 이것도 좀 저주스멜이 풍깁니다. 어떻게 보시나요? 부연설명으로 support 하위로 domain, infra, application, lang, 등의 서브패키지가 있고, 주요한 요소들로는 핵사고날패턴관련 인터페이스 또는 추상모델클래스, 추상메모리저장소클래스, 외부라이브러리 관련 추상화인터페이스, 원시타입 유틸함수 같은게 있습니다. 구성해보면서 시간이 많이 들거나 자꾸 어디에 어느 함수를 support 하위에 넣어야 하는걸까? 하는순간 시간소요도 꽤 됬던거 같구요, 과거에 작성한 구조를 변경하기도 하고, 괭장히 소모적이라 느끼고있네요 ㅎ ps. 아.. 생각해보니 support 내 폴더를 라이브러리화 할땐 support 가 라이브러리 프로젝트의 루트로 해놨습니다. 이건 또 커먼 라이브러리의 저주라고도 할 수 있을까요?ㅎㅎ
(코드나 구조를 다 본게 아니라 엄청 효율적인 답변은 아닐 수 있을 것 같습니다!) 공통에 대한 모듈을 구축하신다고 이해했는데요 잘 의도해서 사용하시겠지만 `support` 에는 정말로 부수적인 관점에서 지원하는 영역의 코드만 들어가있어야 할 것 같습니다, 특정 개념에 대하여 종속적이지 않은 게 중요할 것 같습니다! 근데 약간 이해가 안가는 부분은 `domain, infra, application` 요 부분의 서브패키지가 어떻게 구성 되어있는건지, 약간 상상은 안가네요 저는 가급적 늦게 생성하는 것을 권장하겠지만, 아마 의도가 있으셔서 만드셨을테니 순수성만 잘 유지해주면 되지 않을까 싶습니다! 커먼의 저주야 어디든 생길 수 있지만, 커먼은 무조건 불필요하다는 것은 또 아니니까요! 모듈 자체가 지원하는 역할이라면 루트가 support 인 것은 자연스럽다고 볼 수 있을 것 같습니다
@@geminikims 관심과 좋은참고글 주셔서 감사해요. 혹시 구조에 대해 살짝 구경해주실 의향이 있으시다 답글 주시면, 정리해서 깃헙에 PR한번 올려보겠습니다.
안녕하세요! 예제에선 restdoc을 사용하고 있는데요. swagger, restdoc 등 여러가지 문서화 프레임워크 중에 restdoc을 가장 선호하시는지, 그렇다면 그 이유는 무엇인지 궁금합니다! 혹, 여유 있으실 때 간단하게 답변주시면 정말 감사하겠습니다. 미리 감사드립니다. ( _ _ )
저는 restdocs 를 선호합니다! 이유는 테스트코드를 통해 작성이 되고 스펙의 변경이 있을때 그에 따라 예기치 못한 스펙 변화나 문제에 대해 테스트 코드가 깨지면서 계속 유지보수 해나갈 수 있다는 점이 있습니다 반대로 스웨거는 문서를 구체화 시키거나 명세를 강화하려면 코드 레벨의 어노테이션 등으로 서비스 코드 영역의 문서를 위한 코드가 침투 되는 것이 상당히 마음에 들지 않습니다 다만 레거시나 여러 전략상 두가지나 다른 문서 라이브러리를 혼합 할 수 있다곤 생각하지만 제 최애는 서비스 비침투적이고, 스펙+@를 검증하는 테스트코드도 만들어지고, 문서 커스텀도 명시적인 restdocs 를 선호합니다!
처음 프로젝트 생성시에 필수로 들어가야 하는 모듈은 무엇이 있을까요
프로젝트 구성이나 컨셉이나 목적에 따라 다를 것 같습니다! 정말 작게는 단일 모듈로 충분 할 것 같구요! 기본 구조를 잡고가거나 어느정도 규모 이상이 예상 된다면 저는 보통 로깅, 모니터링 등 횡단 관심사 같은 것들을 모듈로 구성하면서 시작 하는 편 입니다!
오우 이 시간에,,,
예약 업로드라서ㅎㅎ;; 정작 업로드 시점에 저는 자고 있습니다!🤣
안녕하세요! 저번에 답변 주신 내용 재밌게 잘 들었습니다! 이번에도 염치불구하고 현재 사이드프로젝트 중 궁금한점 질문 남깁니다! 1. 동일한 비즈니스 객체 내에서 중복된 코드는 명시적으로 남겨두는 편이신가요? 아니면 private 메서드로 빼는 편이신가요? 완벽히 동일한 기능을 할것이라고 생각해서 메서드로 빼놨다 추후 생긴 기능으로 인해 한줄만 다른 동일한 로직을 만들었던 기억에 여쭤봅니다! 2. 비슷한 맥락일수도 있을거같은데, 입력 객체 검증 외에 서비스 레이어에서 발생하는 검증으로 인한 throw exception은 어떻게 처리하시는 편인가요? 지극히 개인적인 생각이지만, 서비스 레이어에서 명시적으로 남겨놓는것이 좋다고 생각하면서도, 로직의 명료함이 떨어지는것 같다고 생각이 들었습니다 하지만 따로 해당 서비스레이어의 검증 객체를 생성하자니, 불필요한 레이어가 추가된다고 생각되서 질문드립니다! 영상 항상 잘 보고있고 추운 날씨 감기조심하세요! 감사합니다
1. 상당히 케바케입니다! 무조건 중복이 있다고 제거를하게 될 경우 추가 개선이나 관점이 달라질때 다시 풀어야할 수 있기 때문에 케이스별로 분석을하는게 필수 같습니다. 다만 팀이나 회사 기준으로 그라운드 룰을 정할 순 있을 것 같습니다. ex) - 이미 충분히 성장한 개념이라면 중복을 허용하지 않는다 - 아직 충분히 성장하지 않은 개념이라면 중복이 3번 될때 까지는 중복을 허용하지 않는다 등등 이런식으로 룰을 정하는게 가능은 할 것 같습니다. 성장한 개념이란것은 결국 서비스의 상태나 비즈니스의 상태가 안정화가 됬는지, 아직 급발진으로 성장할 가능성이 있는지가 중요할 것 같습니다. 결국 코드(S/W)는 세포 같이 발전하기 때문에, 신생 세포인지 안정된 세포인지가 중요한 것 같습니다. 그래서 어떤 딱 무자르듯한 기준을 말씀드리긴 모호한 것 같습니다 2. 흠.. 이것도 코드를 실제로 봐야 느낌을 정확히 재단 할 수 있을 것 같은데요, 지금 있는 정보만으로는 명확히 비즈니스 측면에서의 예외가 발생해야한다면 서비스 레이어에서 의도적으로 코드상 노출을 시키는 편이고 그게 아니라면 구현레이어의 구현체들에서 각각 구현에 맞는 예외를 던지는 것을 우선시 하는 것 같습니다. 서비스 레이어에 검증 객체를 생성한다는게 약간 어떤 코드인지 잘 안그려지는데, 그것 자체는 불필요한 것 같긴합니다. 만약 프레젠테이션에서 넘어온 값에 대한 검증을 비즈니스 레이어에서 추가로 하는 것을 의미하신것이라면, 그건 바깥 프레젠테이션 레이어에서 완벽히 검증이 끝나고, 완성 된 객체로 비즈니스 레이어에게 넘겨줘야할 것 같습니다!
저같은 경우는 공통으로 뽑으려는 녀석이 "비즈니스적인 요소를 포함하는가" 를 기준으로 삼고 있습니다. 비즈니스 요소를 포함하는 녀석을 공통이라고 생각해서 빼려고 하는경우 대부분이 응집이 잘못된 케이스가 상당히 많았거든요
오오 제가 비슷한 처지에 있는 것 같은데 말씀해주신 거에서 힌트를 얻을 수 있을 것 같습니다 괜찮으시다면 예시 하나 부탁드려도 될까요?
공감입니다 비즈니스의 경우는 공통화는 미루면 미룰수록 좋은 것 같아요!
@@geminikims 오 감사합니당
@@alexL-hq9rf 예시가 생각보다 많은데 막상 말하려니 생각이 안나네요 흠......! 우선 그냥 막 써보면....... `쿠폰` , `상품` 등에 있는데 여기서 `재고 차감` 에 대한 공통 로직이 있다고 판단하여서 섣불리 통합한 경우 각 개념의 특성의 성장이나 변화를 반영하려할때 잘 못된 응집이라는 것을 알 수 있는 그런 느낌쓰 일 것 같습니다
@@geminikims 느낌쓰 알 것 같아요 감사합니다!
안녕하세요 제미니님 쓰시는 노트북 상세 스펙 알 수 있을까요?
상세 스펙이랄게 없어서.. M1 맥북 프로 기본 스펙입니다!
@@geminikims 아하 답변 감사합니다! 14인치 쓰시나요...?
네 14인치닙니다, 근데 인치는 가능하면 큰 것으로 사시는 걸 추천드려요! 전 집에서만 모니터 연결해서 쓰기 때문에 14인치로 구매했습니다 (회사 노트북은 16인치에요)
@@geminikims 아하... 16인치도 더 알아봐야겠군요 감사합니다 램은 16기가 이상, 용량은 1테라정도면 될까요...? 옵션 추가할때마다 가격이 확 바뀌네요 ㅋㅋㅋ
영상 속 예시 api/v1/users/{userId}/orders 에서 user를 묵음으로 처리한다면 api/v1/orders?userId={userId} 의 형태로 처리하게 되는 건가요?
(오래전 영상이라 저도 내용이 기억이 안 나는점 참고 부탁드립니다) 아마도 "My 개념" 관점에서 묵음으로 처리한다 했었을테니 "/v1/my/orders" 를 의미했을 것 같습니다 "/v1/users/{userId}/orders" 는 특정 유저 아이디 기반으로 조회하는 형태이기 때문에, "My 개념" 관점에서 사용하는 것은 관점이 다를 수 있다는 내용이였을 것 같습니다!
오래 전 영상임에도 답변 남겨주셔서 감사드립니다!
이번 에피소드는 주제랑 내용이 너무 이상하네요... 누가 멀티모듈을 만든다고 구현이 잘될거라 생각한다는건지.. 실제 그런 사람이 있는지 궁금합니다.
이상하다고 느끼신다면 아직 경험을 못해보신 케이스 같네요ㅎㅎ 축복 받으신듯합니다😀 앞으로도 쭉 그런 사람 안 만나시길 바라봅니다! (제 경험으론 엄청 많습니다......😅)
구현레이어에서 XXManager, XXProcessor 의 클래스는 보통 어떤 책임을 가지나요?
대부분의 경우는 무책임합니다! (모호한 책임) 그래서 XXManager, XXProcessor 이런 패턴은 가장 주의해야합니다! (제 코드 예시에도 있지만ㅎㅎ) 이런 모호한 용어 자체가 책임이 없다는 것을 보여주는 것이기 때문에 장기적으로 개선되야할 부분임을 보여준다고 봐야할 것 같습니다. 다만 실질적으로 소프트웨어가 작을 경우에는 모호함이 있고, 너무 잘게 쪼개는 느낌이 있기 때문에 저런 모호한 네이밍을 허용 할 수 있다고 생각합니다. 저 같은 경우도 너무 잘게 쪼개기에는 이르다고 판단 될때 저것들을 쓰며, 장기적으로 리펙토링 대상으로 간주합니다! 반대로 특정 프로젝트를 열어서 "XXManager, XXProcessor, XXCompoenet, XX모호함" 이 많다면 프로젝트 전체적으로 책임이 뚜렷하지 않다는 것을 알 수 있는 포인트 같습니다!
이번 영상 마이크 설정이 바뀌었는지 저음이 귀에 꽂히네요 훨씬 좋은 것 같습니다.
오..! 마이크 바꾸고 따로 한 것은 없는데ㅎㅎ 좋으셨다면 다행입니다!
중간에 한 말씀 보고 생각났는데 나주에 시간 나실떄 구독자 레포나 pr 하나 보고 조언받고 싶은 부분 고려해서 코드리뷰한번 하는것도 보면 재밌을거같아요
저도 기회가 되면 해보고싶네요! 내년도엔 도전을...!! (지원 부탁드립니다ㅎㅎㅎ)
@@geminikims 저두 꼭 하고 싶네요..!
안녕하세요, 제미니님. 실무적 관점에서 소프트웨어 개발 시에 어떻게 접근 해야 하는지 큰 그림과 부분부분 디테일 함을 학습할 수 있어서 너무 좋았습니다. 약 30분 가량 되는 영상임에도 불구하고 제미니님께서 10년 이상 고민하며 체득한 개발 고민들이 녹아있음을 한번에 느낄 수 있었습니다. 정말 좋은 영상 감사드립니다!
아이고 이런 정성스러운 감상평을 주시다니 감사합니다!! 모든 것들이 케이스마다 다를 수 있지만 그래도 한 관점에서 도움이 되실 수 있을테니 언젠가 도움을 받기를 바랍니다! 감사합니다!😃