본문 바로가기

전체264

변경을 가하기 두려울 정도로 코드가 복잡할 때, 우리는 어떻게 코드를 이해할 수 있을까? 아래 내용은 '레거시 코드 활용 전략 - 마이클 C. 페더스' 에서 발췌한 내용입니다. 우리는 개발을 하다보면 이런 상황을 겪고 합니다. 종종 이해하기 어려울 정도의 코드를 마주치기도 하고, 코드를 수정하려고 보니 겁이 나는 그런 상황이요. 우리는 이럴 때 어떻게 행동하게 되나요? 두려움을 이겨내고 코드 수정을 바로 이어가나요? 그렇게 했을 때 우리의 코드는 마치 비웃듯이 git rollback 을 하라고 소리치곤합니다. 그런 상황에서 써먹을 수 있는 간단하지만 강력한 방법을 소개하고자 합니다. 1. 노트와 스케치 활용하기 저도 자주 사용하는 방식인데, 어려운 코드보다는 도메인에 대한 이해도를 높이기 위한 수단으로 사용해왔습니다. 이해하고 싶은 코드의 도식화를 직접 그려보는 것입니다. 아주 단순하지만 강.. 2023. 4. 29.
소프트웨어 아키텍쳐 - The hard parts 호기심으로 읽어보기 시작한 이 책은 생각한거보다 더 섬세하게 아키텍쳐를 다룬다. 이 책의 한 챕터당 전개는 등장인물이 등장해 어떤 문제에 대해서 실제 일어날법한 대화를 합니다. 그 대화를 잘 읽다보면, 현업에서도 언급될 수 있는 부분입니다. 특히 흥미로웠던 것은 대부분의 회사가 겪을 수 있는, 모놀리틱 시스템에서 > 마이크로 서비스 시스템으로 점진적으로 전환을 시작하는 과정에서 발생할 수 있는 문제에 대해서다. 회사에서는 마이크로서비스로 전향한다고 해서 돈이 생기는게 아니다보니 더 고민이 될 수 밖에 없는 문제이다. 이 문제도 이 책에서 다룬다. 개발책임에도 불구하고. 이런 내용이 이 책을 더 매력적으로 느껴지게 하는게 아닐까? 분산 아키텍쳐에서 일어날 수 있는 많은 일들을 이야기하고있다. 그러나, 이 .. 2023. 3. 27.
아키텍쳐에서 '서비스' 라는 용어 어디까지 알아보고 오셨나요? 우리가 사용하는 '서비스' 라는 용어는 개발 생태계에서 많이 사용되는 용어입니다. 우리가 알고있는 전통적인 레이어드 아키텍쳐에서도 '서비스'라는 용어가 특히 Application 에서 빈번하게 사용됩니다. 도메인 주도 설계에서 말하는 '서비스'에 대해서 설명하기 전에 전통적인 레이어드 아키텍처에 대해서 설명할 필요가 있다고 생각해 아래와같이 간략히 설명해보려 합니다. 그림 1에서 보이는 것과 같이 흔히 4가지의 계층으로 구성되어, Presentation/Application/Domain/Infra 로 구성되어있고, 의존성은 아래로 향합니다. Presentation 표현계층에서는 Web 에 관련된 책임을 가지게 됩니다. 객체 변환이나 JSON 변환 등의 대표적으로 Web에 대한 책임을 가지게됩니다. App.. 2023. 3. 17.
[5년차 개발자 회고]개발자 인터뷰 하고와서...(feat, 인디스워크) ------추가글---------------------------------------------------------------- 스타트업을 거쳐 우아한형제들로 이직한 개발자 ---------------------------------------------------------------------------- 우연한 기회로 추천받아 개발자로서의 김정규는 어떤 사람인지에 대해서 인터뷰했다. 아마도 유튜브에는 이번 주중에 나올 것 같긴 한데, 스튜디오 가서 촬영하다 보니 너무 민망해서 잘 안되더라. 질문은 사진과 같이 받아서 나름대로 고민해보면서 솔직하게 내 생각을 말하기 위한 스크립트를 준비했다. 그렇지만, 역시 방송 종사자가 아닌 나는 굉장히 긴장했고, 시선 처리가 잘되지 않는 부분을 발견할 수 있었.. 2023. 3. 12.
우리 모두는 브랜딩이 될 수 있다 - [오늘부터 나는 브랜드가 되기로 했다] 책을 읽고 퍼스널 브랜딩에 대한 관심을 이어가기 위해 이 책을 읽었다. 이 책이 퍼스널브랜딩과 관련해서 입문할 수 있도록 도움말을 던져주는 책이지 않을까 싶다. 최근 6주간의 퍼스널 브랜딩 워크숍 수강 후에 개발자로 어떤 방향성을 갖고 살아야 하는지 깊이 이해하고 싶었다. 이 책은 총 4부로 나뉘어 나 자신이라는 작은 스코프에서 시작해 점차 확대해나가는 내용이 담겨있다. 퍼스널브랜딩에 대한 설득을 기업의 브랜드를 인용해서 전달한다. 많은 내용이 유용했지만, 그중에서도 꽤 와닿았던 내용은 다음과 같았다. 1. 나의 브랜드를 찾는 과정은 취향을 찾는 것과 같다. 2. 보여주고 싶은 '나'와 '보이는 나'는 다르다. 3. 우리의 브랜딩은 브랜드와 ING의 결합이다. 이 3가지가 가장 기억에 남았던 부분이고, 이 책은 시.. 2023. 3. 5.
심플한 소프트웨어를 진심으로 고민해본 적이 있나요? - [심플 소프트웨어] 책을 읽고 심플 소프트웨어 책을 읽고, 내가 회사에서 하고 있던 행위가 떠올랐다. 한 때는 아키텍쳐 내에서 강한 의존이라는 버그를 끊어내기 위해 온갖행위를 했다. 과거에 했던 프로젝트 중에 Notification 프로젝트가 기억에 남는다. 이 프로젝트는 유저에게 메세지 채널을 통해 메세지를 전달하는 프로젝트이다. Slack, Email, MMS 등 메세지 채널이 될 수 있는 컴포넌트가 있고, 프로젝트 안에서 MMS 을 받지 못한다면, 카카오톡으로 메세지를 전달하도록 한다. 카카오톡으로 메세지를 읽지 않는다면, 메일로 전달한다. 내결합성에 대해서 고민했었다. Update 가 아니라 Append 만 할 수 있는 코드 만들기 이 책에서 '복잡성은 감옥이다' 부분에서 재밌는 일화를 이야기한다. 이미 퇴사한 사람에게 코드에.. 2023. 3. 1.
Java Regex 정규표현식 사용시 java.lang.StackOverflowError 가 발생하는걸까 자바에서 정규표현식을 활용하다보면, BuiltIn 클래스인 Pattern 과 Matcher 이 두 가지를 사용하는 경우가 많다. Pattern 과 Matcher 을 사용할 때 주의해야될 점이 있다. 바로 재귀로 인해 무한한 루프에 빠질 수 있다는 것이다. 이로인해 위에서 말하 StackOverflowError 가 발생한다. public class RegexTest { public static void main(String[] args) { // 재귀적으로 일치하는 패턴 Pattern pattern = Pattern.compile("(a|b)*c"); Matcher matcher = pattern.matcher("aaa" + "aaa"); System.out.println(matcher.matches()).. 2023. 2. 25.
개발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.
성장에 대해서 - [개발자 원칙] 책을 읽고. '개발자 원칙'은 골든레빗에서 출판한 책으로 우리나라에서 유명한 테크리더 9명의 개발자 원칙에 대해서 이야기하고 있다. 이 책을 읽으면서 성장이라는 키워드에 대해서 궁금증이 들었다. 더 나은 개발자로 살아가기 위한 원칙이라는 키워드로 9명의 테크리더는 자신들의 이야기를 한다. 그 과정에 성장이라는 키워드가 포함된다. 서로 다른 관점에서의 9가지 방식의 성장을 책 속에서 찾을 수 있다. 한편으로는, 우리는 어떤 것을 보고 성장했다고 판단하는 걸까? 라는 물음표가 생겼다. 자신만의 방법론을 통해서 이루고자 하는 것을 이루는 것. 마이너한 법칙을 만들어 꾸준히 지키는 것. ‘의존 할 수 없는 것에는 의존하지 말아야 한다‘ 라는 원칙으로 개발자 인생을 사는 테크리더, 이직을 통해 자신이 원하는 목적을 달성하는 .. 2023. 1. 31.
그 누구도 궁금해하지 않을 나의 이직 이야기 지난 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.
비관적 잠금, 낙관적 잠금 그런 동시성 이슈 해결하기 우리가 개발하는 프로덕트에 동시성 이슈는 어떤 것이 있을까? 사실은 그다지 많지 않을 수 있을 것 같다. 특히, 트래픽은 적은 회사에서는 더욱 그러지 않을까 싶다. 그래서 언제든 맞닥뜨리더라도 당황하지 않았으면 좋겠다. 먼저 동시성 이슈가 무엇인지부터 살펴보자. 하나의 Table Row 을 Client 1과 Client 2가 서로 업데이트를 하려고 하다보니, 동시성 이슈가 발생한다. 좀 더 구체적으로 어떤 상황에서 동시성 이슈가 발생하는가? 참고 할 만한 예시 테스트 코드는 다음과 같다. https://github.com/take-small-steps/understanding-concurrency-Issue/blob/9eea5414c1a35ec09484f2281e51e1b18380dd93/src/test.. 2023. 1. 11.
[린치핀]책을 읽고 린치핀 그거 너만 몰랐던거야? 린치핀이라는 책을 읽으며, 여러 가지 감정이 교차했다. 실타래처럼 꼬인 생각을 하나씩 풀어보면서 이야기해볼까 한다. 린치핀을 왜 이야기해야 할까? '린치핀'이라는 도구는 자동차나 수레에 바퀴가 빠지지 않도록 축에 끼우는 핀으로 핵심이나 구심점을 의미한다. 세스 고딘은 린치핀에 대해서 왜 언급했을까? 질문을 던져보자. 이 책이 나온 시점은 2010년이다. 특정 시점에서는 린치핀 책이 중고가가 10만 원에 팔리기도 했다고 한다. 그 시점에서만큼은 사람들의 니즈에 부합했던 책이라 할 수 있을 것이다. 2010년에는 분명 개발자라는 직업이 3D로 취급되던 시절임이 명확했었다. 그러나, 2023년이 곧 도달하는 지금은 어떠할까? Youtube, 숨고, 탈잉 등의 플랫폼이 린치핀을 더.. 2022. 12. 26.
조영호님과 객체지향에 대해서 이야기하기 트레바리에서 (전) CTO님 덕분에 오브젝트 저자 조영호님과 티타임을 가질 수 있는 기회가 생겼습니다. 티타임 자리에서 물었던 질문에 대해서 기록을 남깁니다. 아쉽게도 사진은 찍지 못했지만, 관련해 이야기 나눈 부분에 대해서 공유하기 위해 기록합니다. 대화했던 내용을 녹음했던 것은 아니였기 때문에, 정확하지 않을 수 있습니다. Q. 추상화란 무엇인가? A. 추상화는 필요없는 것을 없애는 것이다. 동시에 추상화는 용도와 의도가 명확해야 한다. 처음부터 추상화를 발견할 수는 없다. 절차지향으로 코드를 작성하고 난 뒤에 중복이 발견될 때, 추상화 될 가능성이 농후하다. 그러므로, 리팩토링을 통해 추상화를 만들어내자. 추상화는 어쩔 수 없이 탑-다운 방식이 아닌 바텀-업 방식에서 나타날 수 밖에 없다. Q. 추.. 2022. 12. 22.
[관점을 디자인 하라] 책을 읽고 관점을 디자인하라고? 뭘 어떻게? 이 책의 목차만 봐도 이 책에 대한 내용을 한눈에 알 수 있을 것 같다. 심지어 그 안에 내용은 읽어보지 않아도 될 정도로. (우리 회사에서 이 책의 목차만 따로 전사 공유된 적이 있다)목차에 표현된 많은 내용이 '관점을 디자인하라'라는 책 제목과 유기적으로 연결되어 있는지는 잘 모르겠다.이건 저자 마음이니까. 읽으면서 개인적으로 약간의 취사선택을 하지 않았나 싶다. 마치 100개의 맛있는 음식이 진열되어 있더라도, 그중 내가 소화할 수 있는 양은 1~2개 정도의 음식이 있는 것처럼 말이다. 파트별로 카테고리를 나눠서 설명하고 있는데, 카테고리의 의미가 잘 이해되지 않았고, 파트별 작은 주제 하나하나가 파트와 같은 카테고리처럼 느껴졌다. 왜 그렇게 느껴졌는지 생각해보면,.. 2022. 12. 4.
'내 스토리 w. 최원준 클럽장' 후기 내 자신이 원하는 것을 들여다 보는 기회가 얼마나 있을까? 좋은 기회로 회사에서 나의 스토리을 찾을 수 있도록 도와주는 프로그램에 참여했다. 트레바리 내에서 클럽장을 하고 계신 케이타운포유 대표 최원준님. 자신이 (고1 딸에게 뺏길수 없을 만큼) 제일 좋아한다던 하얀 후드티에 청바지을 입고 반가운 얼굴로 맞이해주셨는데, 그 분이 바로 케이타운포유의 최원준 대표님이셨다. 최원준 대표님이 자신이 근무하던 펑타이회사에서 약 30번넘게 '내스토리' 라는 주제로 같은 프로그램을 운영하셨다고 한다. 그 때문인지 모든 것이 스무스하게 이어져 좋은 경험을 할 수 있었다. '내 스토리' 라는 것은 사실 거창하고 대단한 것이 아니다. 내면에 가진 생각을 끄집어 낼 수 있도록 하는 것. 거창하고 대단한 것은 아니지만 쉬운 .. 2022. 11. 17.