본문 바로가기

가치관 쌓기69

영속성 처리하는 Method에 @transactional는 항상 붙이는게 맞을까? 문제 오늘 회사에서 특정 기능을 배포하자마자 문제가 발생했다. 핀포인트에서 발생하고 스택 트레이스는 다음과 같았다. > lazyinitializationexception could not initialize proxy Spring Boot, JPA 활용하는 개발자에게는 흔히 발생되는 예외중 하나이다. 이 예외가 발생하게된 이유는 무엇일까? 코드를 통해 이해해보자. @Entity public class Order { private long id; @OneToMany(mappedBy = "order", fetch = FetchType.LAZY) private List orderItems; } public interface OrderRepository extends JpaRepository { } @Servi.. 2024. 4. 20.
잘 알아보고 사용하자 Java Annotation(주석) 오픈소스를 개발하면서 @AggregateId 라는 필드를 추가할 적이였다. Id 에 대해서 자동생성시키기 위한 @AggregateId(assignStrategy=AUTO or MANUAL) 같이 만들고자 했으나, 그렇게 하면 안될 것 같다는 피드백을 받았다. 왜일까? Java 에서 쓰이는 Annotation 은 무엇인가? 위키 백과 따르면 다음과 같다. 자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다. 여기서 말하는 메타데이터는 무엇일까? 메타데이터(m.. 2024. 3. 10.
이벤트스토밍을 처음 주도해보니... 근무중인 팀에서 '이벤트스토밍'이라는 단어는 '낯선' 용어이다. 나에게는 '익숙한' 용어이다. 스타트업 재직 당시 어떤 기획이든 이벤트 스토밍을 우선으로 진행했다. 코딩을 작성하는 코더로서의 역할은 최대한 지연시키고, 개발하고자 하는 것이 무엇인지, 나의 이해관계자들은 무엇이 가치가 있는지 탐구하는 것을 첫번째 목표로 했다. 나와 함께 해준 프론트엔드 개발자 1인, PM 1인. 두 분 모두 이벤트스토밍이라는 것 자체가 처음이라고 나에게 말씀하셨다. 부담감 현재 회사로 이직하고 난 뒤에 대부분의 업무는 1인 1기능 개발 프로세스였다. 그래서 업무가 할당되면 혼자 이벤트스토밍하고 UML, 시퀀스 다이어그램등 다양한 방법을 활용해왔다. 어느 정도 익숙하다고 판단해 점진적으로 팀에 전파하고 싶었던 마음에 함께.. 2024. 1. 19.
2023년 나는 무엇을 했으며, 앞으로 무엇을 성취할 것인가? 폭설이 내리는 2023년 12월 30일 우리 집앞 나의 첫 질문은 이거였다. 22년도와 23년의 가장 큰 변화점은 무엇일까? 이제 이 질문에 대한 대답을 찾아가보자. 2023년도의 나는 다음과 같은 행위를 했다. 어떤 책을 읽었고 무엇을 느꼈는가? 1. 린치핀 - 세스 고딘 2. 심플한 소프트웨어를 진심으로 고민해본 적이 있나요? - 심플 소프트웨어 3. 도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지 4. 일에 대해서 - 이게 무슨 일이야 5. 성장에 대해서 - 개발자 원칙 6. 우리 모두는 브랜딩이 될 수 있다 - [오늘부터 나는 브랜드가 되기로 했다] 책을 읽고 7. 어디서 살 것인가? - 유현준 8. 레거시 코드 활용 전략 - Github Link 9. 자바 I/O & NIO 네트.. 2023. 12. 30.
매일 약속시간에 늦더라도 프로는 프로다. 나는 상가주택/단독주택이 모여있는 동네에 산다. 그리고 우리집 또한 지하 1층부터 2층까지 있는 상가주택이다. 건물의 나이가 나랑 비슷하니까, 대략 30년이 넘는다. 건물의 나이만큼 주변 동네에는 집수리를 해주는 설비집이 약 200m 간격으로 즐비하다. 오늘 이야기하려는 것은 우리가 매번 수리를 요청하는 설비집 사장님이 있는데 가게명은 '삼정건축'이다. 이 사장님을 보고 있노라면, 맨날 약속시간 정하면 그 시간을 지키지 않지만 프로는 프로구나 라는 생각이 든다. 왜 내가 이런 생각이 들었는지 이야기해보려 한다. 배경 상가주택/단독주택은 집을 지을때, 땅에 흐르는 지하수가 많을 경우 집수정이라는 것을 설치한다. 여기서 집주정이란? 지하수와 각종 슬러시가 모이는 곳을 만든 것이다. 이렇게 물이 모이게 되면 .. 2023. 10. 5.
왜 코드 리팩토링을 수행해야 될까? 지극히 개인적인 생각으로 다른분들과 생각이 다를 수 있습니다. 들어가기 개발을 하면서 코드가 '다소 객체지향적이지 않다'는 느낌의 코드 나래비를 목격하는 경우가 더러 있다. 그럼 우리는 이따금씩 이런 생각이 든다. '이거 내가 좀더 객체지향스럽게 디자인패턴이나 적절한 메소드나 용어를 활용하여 고칠 수 있을 것 같은데?' 라고 말이다. 그리곤 코드를 수정한다. 그리고 배포한다. 과연 이 의식의 흐름대로 행동하는 것이 맞을까? 개발하고 있는 서비스에서 유사한 일이 나에게 반복적으로 발생했다. 이것은 과연 문제일까? 아닐까? 개발자로서 장인정신에 입각하여 당연히 해야되는 것은 아닐까? 나는 리팩토링을 통해 무엇을 얻고 싶었던 걸까? 어떤 코드를 보고 위에서 언급한 것처럼 의식의 흐름으로 고치던 리팩토링을 어느.. 2023. 9. 26.
[회고] 인프콘2023 에서의 발표를 마무리하며 들어가기 올해 저의 버킷리스트 중 하나가 바로 인프콘과 같이 큰 행사에서 발표를 해보는 것이였습니다. 작년 인프콘2022의 경우에는 참여권이 있음에도 다리를 다쳤어서 가지 못했는데, 이번에는 참여할 수 있게 되서 다행이였습니다. 그것도 참여자로서 말이죠. 물론 그 과정이 순탄치 않았습니다. 왜 순탄치 않았을까요? 인프콘2023은 8월 15일날 진행되었는데, 발표자로 선정되었던 날이 5월 24일이였으니, 준비기간까지 포함하면 약 3달간의 마라톤을 달린 셈이 되겠네요. 장장 3개월간 천천히 달리기도 하고 때론 빠르게 달리기도 했던 준비과정에서 대해서 이야기해보려 합니다. 준비&과정 이번에 발표했던 주제는 '오늘도 여러분의 API는 안녕하신가요?' 라는 주제로 발표했었지만, 이전 직장이였던 트레바리에서 만들었.. 2023. 8. 20.
코드가 부채다. - 일주일간 작성한 코드를 오늘 삭제했다. 들어가기 최근에 아주 조금 내가 성장했다고 느낀 계기가 있었다. 최근 회사에서 개발자의 유후 시간이 약 한 달정도 주어졌다. 이 기간동안에는 직군별로 미쳐 시간이 없어 하지 못했던 작업을 할 수 있는 시간이 주어졌다. 기술부채로 쌓여있던 해야될 것을 나열하며 그 중 하나로서 '콘텐츠 슬롯 A/B 테스트 가능한 구조 적용하기' 가 나의 미션이였다. 무엇인지 문장만 보고 이해할 때는 말 그대로 'A/B 테스트가 가능한 구조'를 만드는게 우선이지 않을까? 라는 생각을 하며 동작하는 코드를 살펴보니 실제 동작도 하드 코딩으로서 A/B 테스트를 처리하고 있었다. 여기서 A/B 테스트란? 사용자를 A/B 군집으로 나누어 비지니스 로직/UI 등을 다르게 전달하여 더 나은 선택지를 데이터로서 찾기 위한 수단이다. 하드.. 2023. 7. 31.
Lombok 동작 원리 이해하기(with. Annotation Processor) - 1 들어가기 Java 진영에서 Lombok 은 프로젝트 개발시 Must have Item 처럼 사용되곤한다. 그렇게 된 결정적인 이유는 Java 에서 관례적으로 주로 사용되는 Getter/Setter 를 애노테이션으로 쉽게 해결할 수 있기 때문이다. 그렇다면, Lombok 에서 자주 사용되는 Annotation 은 어떻게 동작하는 걸까? 그리고 Java의 Annotation 은 무엇일까? 엔지니어로 살아온 꽤 긴 시간동안 함께했지만, 깊게 살펴보지 못했던 Lombok 의 Annotation 동작 원리를 이해해보자. Annotation 이란? Java Annotation 은 Lombok 처럼 사용되기 위해 만들어진 것은 아니였다. wiki 를 살펴보면 다음과 같다. In the Java computer pro.. 2023. 7. 29.
다형성과 OCP(Open Closed Principle)은 무슨 관계일까? [리팩토링] 다형성을 이용한 IF 문 제거하기 들어가며 코드를 통해 본격적으로 다형성을 이용한 IF 문 제거하기 를 들어가기 앞서, 왜 IF문을 제거해야 하는지 부터 이해해보자. IF 문을 제거해야 하는 이유로 2가지를 말할 수 있을 것 같다. happy-coding-day.tistory.com 해당 포스팅을에 대한 지인이 피드백을 주셨는데, 몇가지 생각해볼만 부분이 있었고, 관련해서 이야기해보려 합니다. 2가지 맥락으로 이야기할 수 있으며, 다음과 같습니다. 1. Handler 클래스는 여전히 OCP 를 해결 할 수 없다. 2. 다형성과 IF 문을 제거하는 것은 서로 다른 것으로 결이 다른 두 개이다. 언급한 포스팅을 살펴보면, IF 문을 제거하기 전, IF 문의 단점으로 언급한 OCP가 있습니다. 그.. 2023. 5. 27.
[리팩토링] 다형성을 이용한 IF 문 제거하기 들어가며 코드를 통해 본격적으로 다형성을 이용한 IF 문 제거하기 를 들어가기 앞서, 왜 IF문을 제거해야 하는지 부터 이해해보자. IF 문을 제거해야 하는 이유로 2가지를 말할 수 있을 것 같다. 인지 과부하 OCP(Open closed principle) 인지 과부하 IF 라는 키워드를 사용하게 되면, 필연적으로 우리의 두뇌는 IF ELSE 을 고민하게 된다. if(...) { // do Something A } else { // do Something A else... } if 가 한 개일때는 우리의 두뇌는 문제 되지 않는다. 2가지의 경우의 수만 고민하면 된다. 여기에 if문을 중복으로 추가하게 되면 어떻게 될까? if(...) { // do Something A if (...) { // do S.. 2023. 5. 21.
변경을 가하기 두려울 정도로 코드가 복잡할 때, 우리는 어떻게 코드를 이해할 수 있을까? 아래 내용은 '레거시 코드 활용 전략 - 마이클 C. 페더스' 에서 발췌한 내용입니다. 우리는 개발을 하다보면 이런 상황을 겪고 합니다. 종종 이해하기 어려울 정도의 코드를 마주치기도 하고, 코드를 수정하려고 보니 겁이 나는 그런 상황이요. 우리는 이럴 때 어떻게 행동하게 되나요? 두려움을 이겨내고 코드 수정을 바로 이어가나요? 그렇게 했을 때 우리의 코드는 마치 비웃듯이 git rollback 을 하라고 소리치곤합니다. 그런 상황에서 써먹을 수 있는 간단하지만 강력한 방법을 소개하고자 합니다. 1. 노트와 스케치 활용하기 저도 자주 사용하는 방식인데, 어려운 코드보다는 도메인에 대한 이해도를 높이기 위한 수단으로 사용해왔습니다. 이해하고 싶은 코드의 도식화를 직접 그려보는 것입니다. 아주 단순하지만 강.. 2023. 4. 29.
[5년차 개발자 회고]개발자 인터뷰 하고와서...(feat, 인디스워크) ------추가글---------------------------------------------------------------- 스타트업을 거쳐 우아한형제들로 이직한 개발자 ---------------------------------------------------------------------------- 우연한 기회로 추천받아 개발자로서의 김정규는 어떤 사람인지에 대해서 인터뷰했다. 아마도 유튜브에는 이번 주중에 나올 것 같긴 한데, 스튜디오 가서 촬영하다 보니 너무 민망해서 잘 안되더라. 질문은 사진과 같이 받아서 나름대로 고민해보면서 솔직하게 내 생각을 말하기 위한 스크립트를 준비했다. 그렇지만, 역시 방송 종사자가 아닌 나는 굉장히 긴장했고, 시선 처리가 잘되지 않는 부분을 발견할 수 있었.. 2023. 3. 12.
개발DB 꼭 필요한가요? 진짜 필요한거예요? 배경 회사를 옮기고 적응하는 과정에서, 개발 DB 대한 고찰을 하게 되었다. 스타트업 회사는 제한적인 리소스에서 최고의 효율을 내야만 했던 회사였으며, 이번에 옮긴 회사는 리소스가 풍부했기 때문에 무엇이든 할 수 있었다. 그 과정에서 '개발 DB는 무엇을 위해 필요로 하는가?'에 대한 생각을 하게 되었다. 들어가기 개발자가 일하는 대부분의 환경은 다음과 같은 형태로 일을 하게 된다. 프로덕트 DB(Product DB) ----- 개발 DB(DevelopDB) ----- 로컬(LocalDB) 이런 형태는 하나의 기능을 개발하고 테스트해서 최종적으로 릴리즈 되기 까지 3가지 타입의 DB을 활용하게 된다. 동작되고 있는 프로덕트에 릴리즈하기 직전까지 개발자들끼리 기능 구현시 활용하는 DB는 개발 DB. 기능을.. 2023. 2. 24.
[퍼스널브랜딩 구축기] 6주간의 퍼스널 브랜딩 워크숍을 마치며 NextStep 에서 진행하는 퍼스널브랜딩 워크숍 에서 진행한 내용을 담은 포스팅입니다. 6주간 워크숍을 책임감을 갖고 이끌어주신 문수민님, 김민석님에게 감사합니다. The scariest moment is always just before you start. After that, things can only get better. - Stephen King 가장 두려운 순간은 시작하기 직전입니다. 시작 후에는 모든 상황은 나아질 수밖에 없습니다. To be yourself in a world that is constantly trying to make you something else is the greatest accomplishment. - Ralph Waldo Emerson 끊임없이 당신을 바꾸려고.. 2023. 2. 18.
[퍼스널 브랜딩 구축기] 사람을 보고 배우자(feat 임성현, 임동준) 이번주 퍼스널 브랜딩 워크숍에서는 특별한 연사를 모시고 진행했다. AWS 의 임성현님, 우아한형제들의 임동준님 두 연사를 모시고 어떻게 퍼스널 브랜딩을 할 수 있는지 본격 진지한 대화를 나눴다. 본격 진지한 대화는 뭔가 연사가 발표하는 그런 방식보다는 자연스럽게 워크숍에 참여한 사람들과 대화를 나누며, 스스로 가졌던 고민에 대해서 이야기 나눴다. Q. 나는 쿽스타터가 되고 싶다. 그러나 늘 고민하는 단계에서 벗어나기 어렵다. A. 임동준: 자신이 사용할 수 있는 도구를 만드는 것에 초점을 맞쳐보면 어떠할까? 아무도 쓰지않을 도구를 만들기 보단 쓸 수 있는 도구를 만들어 피드백도 받고, 사용된다면 더 동기부여가 될 것이다. Q. 요즘 트랜드에 속하는 개발자 성향은 어떠한가요? A. 임성현, 임동준 사람을 .. 2023. 2. 13.
[퍼스널 브랜딩 구축기] 3. 나라는 브랜드를 '견고하게' 만들자 NextStep 에서 진행하는 퍼스널브랜딩 워크숍 에서 진행한 내용을 담은 포스팅입니다. 나라는 브랜드를 '견고하게' 만들자 Q. 나라는 사람을 한 줄로 표현한다면? 이 질문을 처음 받았던건 사실 트레바리 근무 중 복지차원에서 했던 워크숍에서 질문을 받아본 적이 있었다. 당시에 뭐라고 작성했더라.. '도전하고 성취하기를 좋아하며 책 읽기를 좋아하는 개발자' 라고 했었던 것 같다. https://bit.ly/3RxcfDK '내 스토리 w. 최원준 클럽장' 후기 내 자신이 원하는 것을 들여다 보는 기회가 얼마나 있을까? 좋은 기회로 회사에서 나의 스토리을 찾을 수 있도록 도와주는 프로그램에 참여했다. 트레바리 내에서 클럽장을 하고 계신 케이타운 happy-coding-day.tistory.com 이후로 진지.. 2023. 2. 2.
그 누구도 궁금해하지 않을 나의 이직 이야기 지난 1년하고도 4개월간의 트레바리에서의 여정이 끝이 났다. 트레바리에서의 여정은 글을 쓰는 이곳에 담을 수 없을 정도로 버라이어티하지 않았나 싶다. 언제나 첫경험은 강렬 한 것 처럼, 다시는 트레바리에서의 근무 경험을 하지 못할 것이라 단언한다. 이 부분에 대해서는 미래의 어느날 의미있게 다뤄볼까 한다. 2022년 12월 20일 트레바리에서 퇴사했다. 그 이유에 대해서는 언급하기 어렵지만- 요즘 스타트업은 꽤 겨울이라는 사실은 명확하다. 그리고 트레바리에서 근무하던 중, 내가 존경하는 CTO님이 퇴사했다. CTO님을 개발자로서 그리고 인간적으로도 진심으로 존경하는 분이지만, 스타트업 이라는 공간은 그 분에게도 처음일 수 있고 맞지 않을 수 있으니까 퇴사할 수 있다고 생각한다. 문제는 그 이후부터 였던것.. 2023. 1. 29.
[퍼스널 브랜딩 구축기] 2. '나'는 어떤 색깔을 가지고 싶나요? NextStep 에서 진행하는 퍼스널브랜딩 워크숍 에서 진행한 내용을 담은 포스팅입니다. 시작하기 앞서 숙제가 있었다. 바로 외부에서 바라보는 나의 특색은 무엇인가? 위 내용은 구글 폼으로 주변 지인에서 물어본 내용이다. 위 설문내용은 https://www.viacharacter.org/ 여기서 강점 테스트를 해본 결과다. 주변에서 바라보는 나와 내가 생각하는 나에 대해서 테스트를 해본 내용에 흥미로운 부분이 일부 있었다. 연차가 쌓이면서 중요한건 나의 '가치관' 이다. 라고 외치고 다녔는데, 아니나 다를까 첫번째가 공평성 정의이다. 그리고 다른 사람이 본 나의 내용에도 확고한 신념이 있다는 말이 있다. 2023. 1. 29.
[퍼스널 브랜딩 구축기] 1. 나는 누구인가? NextStep 에서 진행하는 퍼스널브랜딩 워크숍 에서 진행한 내용을 담은 포스팅입니다. 퍼스널 브랜드란 무엇인가? 위키디피아에 따르면, 퍼스널 브랜딩은 개인을 업계의 권위자로 위치시키고, 경쟁업체와 차별화함으로써 개인에 대한 대중의 인식을 만들고 영향을 미치기 위한 의식적이고 의도적인 노력입니다. 퍼스널 브랜딩 프로세스에는 자신의 독특함을 찾고, 자신이 알려지고 싶은 것에 대한 평판을 쌓은 다음, 자신을 알리는 과정에 포함됩니다. 궁극적으로, 목표는 메시지를 전달하고 수익을 창출할 수 있는 무엇가를 만드는 것입니다. 즉, 경쟁자와 구분되는 이미지를 구축하는 것이다. 최근 NextStep 에서 진행하는 퍼스널브랜딩 워크숍 에 참여중에 있다. 퍼스널 브랜딩 워크숍에 참여하게 된 근본적인 원인은 어떤 개발자.. 2023. 1. 23.