<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>최창규</title>
    <link>https://brunch.co.kr/@@399</link>
    <description>서비스를 사랑하는 개발자</description>
    <language>ko</language>
    <pubDate>Wed, 15 Apr 2026 17:21:39 GMT</pubDate>
    <generator>Kakao Brunch</generator>
    <image>
      <title>서비스를 사랑하는 개발자</title>
      <url>//img1.kakaocdn.net/thumb/C100x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FycmQEwrTNDQQPdKfdkpD3_FF9qA.jpg</url>
      <link>https://brunch.co.kr/@@399</link>
      <width>100</width>
      <height>100</height>
    </image>
    <item>
      <title>Java Developer Roadmap - 백엔드 + 자바 + 스프링</title>
      <link>https://brunch.co.kr/@@399/72</link>
      <description>대한민국은 현재 소프트웨어 개발자 구인 대란 중입니다. 특히 실력 있는 백엔드 개발자 채용은 하늘의 별따기입니다. 그래서 예비 개발자들은 실력을 갖추고 싶어 합니다. 그러나&amp;nbsp;은탄환은 없습니다. 차근차근 실력을 쌓으셔야 합니다.  그 길에 도움이 되고자 15년 동안 업계에 있으면서 보고 들은 경험을 바탕으로 나만의 기술 로드맵을 작성해 봤습니다. 혹시 미래의&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2Fqzp8YmJyPCh9L_3onKGjl0GH4Is.jpeg" width="500" /&gt;</description>
      <pubDate>Wed, 09 Feb 2022 14:27:31 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/72</guid>
    </item>
    <item>
      <title>boot 1.3을 2.3으로 버전업 - spring boot</title>
      <link>https://brunch.co.kr/@@399/70</link>
      <description>카카오헤어샵 어드민을 spring-boot 1.3에서 2.3으로 버전 업하면서 겪은 시행착오를 공유할까 합니다.   왜 버전업을 하나요? 스프링의 새로운 모듈을 써야 하는데 1.3은 버전이 너무 낮아서 지원이 안되었어요. 5년 동안 방치하다가 이제야 올리게 되었습니다.  그리고&amp;nbsp;새로 합류한 개발자들이 모두 boot 2.x 에 익숙한 상황이라서 버전을 올리는&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FknUqWtREBwNs7qe0gQh8fcQBVMs.png" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:23:05 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/70</guid>
    </item>
    <item>
      <title>spring-data-r2dbc - 이제 RDBMS도 비동기 시대</title>
      <link>https://brunch.co.kr/@@399/69</link>
      <description>spring 진영에서 가장 핫한 R2DBC의 spring-data 프로젝트인 spring-data-r2dbc에 대해서 살펴볼까 합니다.  R2DBC란 무엇인가?  공식 사이트는&amp;nbsp;https://r2dbc.io/입니다.  간단하게 정의하면 R2DBC는 Reactive Relational Database Connectivity의 약어로써&amp;nbsp;적은 수의 스레드로 동시&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FTqgTMg5zBePt2U50-Ua1_ot_NT0.png" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:21:27 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/69</guid>
    </item>
    <item>
      <title>REST-assured - 멋진&amp;nbsp;rest api test library</title>
      <link>https://brunch.co.kr/@@399/68</link>
      <description>REST API를 테스트하는 라이브러리 중에서 인기 있는 REST-assured(https://rest-assured.io/)를 소개할까 합니다. Java springboot와도 찰떡으로 호환이 되니 쉽게 사용해 볼 수 있을 거예요.  gradle 설정 dependencies {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation(&amp;quot;io.rest-assured:rest&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2Fh1x1YQ_534YQ3iGPk13nM_esjf0.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:18:59 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/68</guid>
    </item>
    <item>
      <title>전체 매장의 수수료 타입을 뽑아 보자. - MySQL 그룹 함수</title>
      <link>https://brunch.co.kr/@@399/67</link>
      <description>전체 매장의 수수료 타입을 뽑아 보자. 업무 처리 중에 SQL의 그룹핑과 관련 내용을 알게 된 것이 있어서 공유합니다.   카카오헤어샵 MySQL DB의 shop_platform_fee는 매장별로 수수료 타입을 저장하는 테이블입니다. 칼럼은 apply_date (적용일) approved_at (승인 일시) type (수수료 타입) shop_id (매장 id&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2Fp18PTShmcfVlwO9zL37SvHrIPS4.png" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:13:32 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/67</guid>
    </item>
    <item>
      <title>Transaction marked as rollback - 알면 알수록 어려운 트랜잭션의 세계</title>
      <link>https://brunch.co.kr/@@399/66</link>
      <description>Spring 트랜잭션을 처리하다 보면 Transaction marked as rollbackOnly 예외를 종종 접하게 됩니다. 트랜잭션 안에서 RuntimeException이 발생해서 트랜잭션이 rollbackOnly로 마킹이 되어 무조건 Rollback이 되는 것입니다.  어라 try-catch 해서 처리했는데? 비록 try-catch 에서 예외를 처리&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FjUEWpIHc8JnijgrFYq0yp9o_VzM.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:09:29 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/66</guid>
    </item>
    <item>
      <title>Effective Java to Kotlin - 코틀린도 이펙티브하게 개발하자.</title>
      <link>https://brunch.co.kr/@@399/65</link>
      <description>Kotlin으로 프로젝트를 하면서 자연스럽게 Effective Java에서 소개하고 있는 지침들을 Kotlin으로 구현하면 어떻게 개발해야 하는지 관심이 갔습니다. 그래서 각 항목별로 간단하게 Kotlin으로 구현하는 방법을 정리해 봤습니다. 또 Language 레벨에 녹아 있는 지침들도 찾아보겠습니다.  규칙 1. 생성자 대신 정적 팩토리 메서드를 사용할&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2F0iPnf5j1PHx80Z6pVO2EXg13APE.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:08:05 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/65</guid>
    </item>
    <item>
      <title>Spring REST API 문서 - swagger</title>
      <link>https://brunch.co.kr/@@399/64</link>
      <description>Production 환경에서는 REST API를 많이 사용합니다. 그렇다 보니 Api를 문서화해서 호출하는 쪽에 알려줘야 하는 경우가 많습니다. 프로젝트 초창기에는 word 문서로 형식 없이 작성해서 사용했습니다. 그러다 보니 문서 관리도 어렵고, 형식도 제각각이었습니다. 그래서 도입한 것이 RAML입니다. RAML은 REST Api의 documentati&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FkO39Ox9RPU8aHI65oFlVkRLdh2U.png" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:06:00 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/64</guid>
    </item>
    <item>
      <title>Kotlin 도입</title>
      <link>https://brunch.co.kr/@@399/63</link>
      <description>운 좋게도 회사에서 Kotlin을 도입한 지 1년여가 되었습니다. 지난 1년 간을 되돌아 보며 Kotlin을 사용해 본 경험을 함께 나눠 볼까 합니다.  왜 Kotlin 인가? 카카오헤어샵의 Backend 시스템은 Java 90%, Python 5%, Node.js 5%의 비중으로 구축되어 있습니다. 그중에서 주요 비즈니스는 Java로 되어 있습니다. 그래&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FsmDwPVOsgqmVIXphfqbTa4t-sHk.png" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:03:35 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/63</guid>
    </item>
    <item>
      <title>MySQL Lock wait timeout exceed - java&amp;nbsp;BatchUpdateException 문제 해결</title>
      <link>https://brunch.co.kr/@@399/62</link>
      <description>MySQL 데이터베이스를 조작하는 Java Batch 프로그램에서 간헐적으로 &amp;ldquo;MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction&amp;rdquo; 예외가 발생하는 경험을 했습니다. 항상 나는 것은 아니고 100번 돌면 1번 정도 발생하네요.  원인이 궁금해서 관련&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FUJYS5qAqRM9N9IPzcnB0-thYgtE.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 06:01:26 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/62</guid>
    </item>
    <item>
      <title>일 잘하는 사람은 단순하게 말합니다 - 아무리 개발을 잘해도 말을 못하면 일을 잘한다고 할 수 없죠</title>
      <link>https://brunch.co.kr/@@399/61</link>
      <description>주위에 개발을 잘하는 직원은 많습니다. 그런데 말을 잘하는 개발자는 많치 않더라구요. 요즘 저의 최애 도서입니다. 벌써 세 번째 읽고 있어요. 특히 나는 일을 잘한다고 생각하는데 회사로부터 인정을 못 받는다고 느끼는 분에게 추천합니다.   내용이 궁금한 분을 위한 짧은 토막  1장 보고의 언어우리는 너무 무섭게 이야기합니다.&amp;nbsp;&amp;quot;저... 보고드릴 게 있습니다&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2F1qyBBGhsV7IqJfpuRn8ZBf5u3_M.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 05:58:10 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/61</guid>
    </item>
    <item>
      <title>소프트웨어 장인을 읽고 - 오늘 정말 멋지게 일 했어라고 스스로 읊조리는 개발자 되자</title>
      <link>https://brunch.co.kr/@@399/60</link>
      <description>개발자에게 좋은 책이 있어서 소개하려고 합니다. 바로 산드로 만쿠스의 '소프트웨어 장인'입니다.  이 책은 좋은 개발자란 무엇인가에 대한 물음을 던지는 책입니다.   산드로 만쿠스가 생각하는 소프트웨어 장인은?  1. 변화에 대응하는 것뿐 아니라, 계속해서&amp;nbsp;가치를 더한다. 장인은 기능을 추가하고 버그를 수정하는 것뿐만 아니라 코드를 깔끔하게 정리하고, 구조&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2F7wyJkzpispb4V6SwxbTiV5hJk4k.jpg" width="500" /&gt;</description>
      <pubDate>Fri, 28 Jan 2022 05:52:10 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/60</guid>
    </item>
    <item>
      <title>카카오헤어샵의 아키텍처 - 모놀리틱에서 마이크로서비스로 진화 중입니다.</title>
      <link>https://brunch.co.kr/@@399/13</link>
      <description>카카오헤어샵의 시스템 아키텍처는 Monolithic 구성으로 되어 있습니다. 그리고 하나씩 &amp;nbsp;Microservice 구성으로 변경하고 있습니다. 프로젝트 내부 얘기를 하기 전에 먼저 두 용어의 정의에 대해서 알아보겠습니다.   Monolithic vs. Microservice Monolithic은 시스템을 하나의 덩어리로 만드는 방식입니다. 일반적으로 UI&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FmIIs4hWPuAeZiCxSyUfyqv1J_uI.png" width="500" /&gt;</description>
      <pubDate>Wed, 13 Jun 2018 12:08:21 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/13</guid>
    </item>
    <item>
      <title>카카오헤어샵의 프레임워크 - Spring, Hibernate, Querydsl</title>
      <link>https://brunch.co.kr/@@399/12</link>
      <description>카카오헤어샵은 Java 기반으로 개발되었고, 프레임워크는 Spring, ORM은 Hibernate, 정적 타입 SQL 도구는 Querydsl을 사용했습니다. 그러면 하나씩 기본적인 개념에 대해서 설명드리고 채택 배경에 대해서 말씀드리겠습니다.   Spring 카카오헤어샵은 2015년 8월에 프로젝트를 착수했습니다. 당시 모인 개발자들이 3명이었는데 각각 J&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FblN0hOgQGilxccuoYx4ENfC8Qyg.jpg" width="500" /&gt;</description>
      <pubDate>Sun, 20 May 2018 13:59:43 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/12</guid>
    </item>
    <item>
      <title>카카오헤어샵의 소스관리 - Git, GitHub, Git-flow</title>
      <link>https://brunch.co.kr/@@399/11</link>
      <description>카카오헤어샵은 GitHub을 이용해서 소스&amp;nbsp;버전 관리(Source Version Control)를 하고 있습니다. 거기에 추가로 Git-flow의 브랜치 전략을 차용하고 있습니다.   GitHub GitHub은 가장 인기 있는 Git 호스팅 서비스입니다. 우리는 Enterprise version을 구매해서 사용하고 있습니다. GitHub의 일반적인 사용 방&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FVZP0cpkL8ZFma2DI8w1qW6LISuw.jpg" width="500" /&gt;</description>
      <pubDate>Wed, 16 May 2018 14:18:16 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/11</guid>
    </item>
    <item>
      <title>카카오헤어샵의 TDD - Write tests. Not too many.</title>
      <link>https://brunch.co.kr/@@399/9</link>
      <description>TDD(Test Driven Development)는 이제 트렌드가 아닌 필수가 됐습니다. 우리는 몇 가지 규칙을 정해서 프로젝트에 TDD를 적용했습니다.   깨지는 테스트 -&amp;gt; 성공 테스트 -&amp;gt; 리팩터링을 반복하자. 먼저 깨지는(Fail) 테스트를 작성하고 그런 다음에 SUT(System under test)의 소스 코드가 테스트를 통과(Success)하&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FQK2CLDQw6qOCnzVvESVwxb7mtgs.png" width="475" /&gt;</description>
      <pubDate>Mon, 14 May 2018 15:17:40 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/9</guid>
    </item>
    <item>
      <title>카카오헤어샵의 DDD - 비즈니스 조직이 하는 말에 귀를 기울여라.</title>
      <link>https://brunch.co.kr/@@399/7</link>
      <description>유지보수가 쉬운 시스템이 갖추어야 할 요소 중에서 가장 중요한 2가지는 바로 Loosed Coupling과 High Cohesion입니다. Loosed Coupling은 모듈 간의 연관관계가 interface로 되어 있어서 느슨해야 한다는 것이고 High Cohesion은 어떤 목적을 위해 연관된 기능들이 모여서 구현되어 있고 지나치게 많은 일을 하지 않는&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FWtZrBGx0YviEbSl3EBT8_tksBSM.jpg" width="500" /&gt;</description>
      <pubDate>Wed, 02 May 2018 16:31:41 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/7</guid>
    </item>
    <item>
      <title>카카오헤어샵의 개발문화 - (서비스를) 사랑하라 한번도 상처받지 않은 것처럼</title>
      <link>https://brunch.co.kr/@@399/4</link>
      <description>카카오헤어샵 개발팀은 애자일 방법론을 채택하고 팀원들 간의 수평 커뮤니케이션을 지향합니다. 또 적당한 제약 속에서 개인의 자율성을 중시합니다. 수평 커뮤니케이션, 자율성 모두 카카오가 지향하는 것들입니다. 카카오헤어샵은 사내&amp;nbsp;프로젝트로 시작해서 독립했기 때문에 카카오의 영향을 많이 받았습니다. 그러한 큰 틀 안에서 5~6명으로 구성된 개발자들이 기민하게 서&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FTvmniHT3P6i0u2EHVQaB5lCb6JU.JPG" width="500" /&gt;</description>
      <pubDate>Wed, 25 Apr 2018 16:46:53 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/4</guid>
    </item>
    <item>
      <title>카카오헤어샵의 SOLID - 클래스는 한 가지 일만 합시다.</title>
      <link>https://brunch.co.kr/@@399/3</link>
      <description>카카오헤어샵에서는 SOLID 원칙을 적용하기 위해 다양한 노력을 했습니다.  SOLID는 로버트 C.마틴이 주장한&amp;nbsp;유지보수가 쉽고 확장이 용이한 코드를 만들 때 적용하면 좋은 객체 지향 프로그래밍 원칙입니다. SOLID에 대한 자세한 설명은 위키피디아를 참고해주세요.   SRP(Single Responsibilty Principle) 한 클래스는 단 한 가&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FGpL0yV5W0P8Bvi5HxWFbiG5FJZc.PNG" width="500" /&gt;</description>
      <pubDate>Sat, 21 Apr 2018 16:03:29 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/3</guid>
    </item>
    <item>
      <title>카카오헤어샵의 Clean Code - 이름 짓는 건 너무 어려워요.</title>
      <link>https://brunch.co.kr/@@399/2</link>
      <description>카카오헤어샵 프로젝트는 Claen Code 를&amp;nbsp;추구했습니다.   의미 있는 이름 짓기 개발자들이 가장 어려워 하는&amp;nbsp;것이 바로 이름 짓는 것입니다. 패키지명, 클래스명, 함수명, 변수명 등 하루에도 수십 번은 고민에 빠지게 됩니다. 그래서 카카오헤어샵 프로젝트에서는 몇 가지 규칙을 정했습니다.  1. 준말(약어)은 지양 Product를 prod로 쓰지 않고 &lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F399%2Fimage%2FBIvrqh23AEZUw4PcnOiye6BRKZ8.jpeg" width="500" /&gt;</description>
      <pubDate>Fri, 13 Apr 2018 14:22:54 GMT</pubDate>
      <author>최창규</author>
      <guid>https://brunch.co.kr/@@399/2</guid>
    </item>
  </channel>
</rss>
