<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>또라이개발자</title>
    <link>https://anyjava.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 13 May 2026 12:14:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>anyjava</managingEditor>
    <image>
      <title>또라이개발자</title>
      <url>https://t1.daumcdn.net/cfile/tistory/18092C344EE162E024</url>
      <link>https://anyjava.tistory.com</link>
    </image>
    <item>
      <title>CHAAK 서비스 종료, 그리고 회고</title>
      <link>https://anyjava.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 오전, &lt;b&gt;일상을 밈처럼&lt;/b&gt; &lt;b&gt;&lt;i&gt;CHAAK&lt;/i&gt;&lt;/b&gt; 서비스가 종료되었습니다.&lt;br /&gt;출근 후 가장 먼저 한 일이 API 서버들을 종료(shutdown)하는 것이었죠.&lt;br /&gt;지난해 7월에 시작해, 짧지만 5개월간 운영된 서비스였습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 재미있는 제품을 만들어보고 싶다는 마음으로 모였고, 수차례의 피벗 끝에 제품을 출시할 수 있었습니다. 그 과정에서 팀과 저는 많은 것을 배웠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무엇보다 초기 제품 출시에서 가장 중요한 것은 빠른 대응을 위해 &lt;b&gt;배포 속도를 높이는 것&lt;/b&gt;이었습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과, 우리 제품팀은 앱 출시 후 5개월 동안 &lt;b&gt;앱스토어 배포를 총 43번 진행&lt;/b&gt;했습니다.&lt;br /&gt;특히 한 달 동안 11번의 앱 배포를 하며, 고객의 니즈에 빠르게 대응하고자 했습니다.&lt;br /&gt;그 기간 동안 &lt;b&gt;Feature Flag&lt;/b&gt;와 &lt;b&gt;Trunk-Based 개발 방식&lt;/b&gt;을 활용해 API 배포는 하루에도 수십 차례 진행되었습니다.&lt;br /&gt;또한, 클라이언트 개발에는 &lt;b&gt;Flutter&lt;/b&gt;를 선택하여 &lt;b&gt;모든 엔지니어가 앱 개발에 참여할 수 있도록&lt;/b&gt; 했습니다.&lt;br /&gt;무엇보다도 팀원들이 &lt;b&gt;기술과 직무의 경계를 넘어서 제품 개선에 몰입했던 것&lt;/b&gt;이 주요했다고 생각합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 서비스 종료라는 성적표를 받았지만, 팀은 &lt;b&gt;빠른 제품 출시 속도를 경험했고, 그 과정에서 작은 성공과 실패를 반복하며 성장&lt;/b&gt;했습니다.&lt;br /&gt;이 경험이 앞으로 우리 팀이 더 나아가는 데 있어 큰 도움이 될 것입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;안녕, CHAAK!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Image 2025-02-06 21-34-05.png&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;1662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sjUH9/btsL9MuzxH5/ZfsQK8CVSKkiyHb8Ylssf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sjUH9/btsL9MuzxH5/ZfsQK8CVSKkiyHb8Ylssf1/img.png&quot; data-alt=&quot;CHAAK&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sjUH9/btsL9MuzxH5/ZfsQK8CVSKkiyHb8Ylssf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsjUH9%2FbtsL9MuzxH5%2FZfsQK8CVSKkiyHb8Ylssf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1682&quot; height=&quot;1662&quot; data-filename=&quot;Image 2025-02-06 21-34-05.png&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;1662&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CHAAK&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>생각정리</category>
      <category>chaak</category>
      <category>SNS</category>
      <category>제품개발</category>
      <category>회고</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/150</guid>
      <comments>https://anyjava.tistory.com/150#entry150comment</comments>
      <pubDate>Thu, 6 Feb 2025 21:45:50 +0900</pubDate>
    </item>
    <item>
      <title>2024년 회고</title>
      <link>https://anyjava.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년에서 2025년으로 넘어가고 있는 지금 올해를 기록으로 남기고자 컴퓨터 앞에 앉았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2년 만의 회고인데, 24년인 듯 23년부터인 듯 모르겠지만 우선 회고를 적어 보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;1.  Close 그리고&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/bongjin.kim/p/C_2X1ztpiqP/?img_index=1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;i&gt;&lt;b&gt;CHAAK&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년부터 합류한 Grandeclip에서는 신규 서비스를 만들고 있었다. 처음에는 비공개로 하다가 두어 번의 피봇팅을 거쳐서 CHAAK 이란 이름의 SNS를 오픈하게 되었다. SNS라는 도메인에 처음 접근하여 그럴싸한 계획으로 신나게 두들겨 맞았던 한 해가 되었던 것 같다. 다음 문장을 되네이며 마음을 다시 잡는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;잘될 때까지 안 될 것이다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기술적인 내용은 간단하게는 다음과 같다. 내 커리어에서는 맘시터에서 데이터엔지니어링여역에 이어 클라이언트 개발에 직접 참여하고 생태계를 조금이라도 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Typescript NestJS + Prisma 조합으로 Backend 를 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Flutter 를 이용해서 iOS / AOS 앱을 만들었다. ( &lt;a href=&quot;https://apps.apple.com/us/app/chaak-social-sticker-app/id6473814462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AppStore&lt;/a&gt; | &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.grandeclip.close&amp;amp;hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PlayStore&lt;/a&gt; )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 얼리스테이지 경험&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배달의민족은 시리즈 C에 합류를 했다. 그리고 맘편한세상은 시리즈 A -&amp;gt; B 단계를 경험을 했다. 그래서 극초기의 경험을 해보면 좋겠다고 생각을 하고 있던 차에 좋은 기회가 되어 Grandeclip에 합류하게 되었다. BM 성숙하고 제품팀의 조직규모가 10명 이상이 넘는 조직에서 매니징과 극초기의 원팀을 운영하는 것은 완전히 다른 경기장이었다. 내가 이때까지 했던 조직을 운영했던 방식이 무조건적으로 해답이 되지는 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루하루가 문제가 바뀌면서 우선순위가 바뀌었고, 한 명 한 명 고객의 반응을 보면서 빠르게 배포를 이어 나가야 했었다. 안정성보다는 빠른 속도가 최우선이 되어야 했었다. 나는 코파운더가 아니었지만, 만약 내가 파운딩 멤버였다면 더 빠른 개발 속도를 지향했을지도 모른다. 그러면서 나의 개발 철학이 자연스럽게 정리가 되기도 했었다. 나는 오로지 문제 상황을 바르게 판단하고 그 문제를 해결하는데 모든 에너지를 쏟는 게 맞다고 생각이 들었다. 그 문제는 당연히 기술적인 문제를 벗어나는 문제가 된다. 초기이면 초기일수록 기술적인 문제는 후 순위가 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 하고 있는 이 경험이 미래에 내 모습에 분명하게 도움이 되는건 지금에서도 확신을 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 건강&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해부터 건강을 챙기기 시작했다. 내가 존경하시는 분이 항상 운동 하는 이유가 &lt;b&gt;&quot;나이 들어서도 두발로 걷기 위해서&quot;라고&lt;/b&gt; 말씀하셨는데, 올해의 나도 그 목표를 위해서 운동을 꾸준하게 시작했다. 3월부터 월/수/금 새벽 수영을 시작했다. 출석률은 정확하게 측정은 하지 않았지만, 80% 이상은 새벽 수영을 다녀왔다. 그리고 화/목 점심시간에는 필라테스를 다니고 있다. 필라테서는 2년 넘게 꾸준하게 하고 있는 운동이라서 이제는 필라테스를 하지 않으면 몸에서 뻐근함이 몰려온다. 내년에도 꾸준하게 운동을 하고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 멘토링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아산나눔재단 / &lt;a href=&quot;https://inf.run/HD4pd&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;인프런&lt;/a&gt; 등을 통해서 소소하게 멘토링을 진행을 했었다. 올 한 해 인프런을 통해서만 53건을 진행을 했다. 많은 개발자분들을 만나서 대화를 나누고 도움을 드렸던 것 같다. 좋은 소식을 전해오는 멘티분들도 있었는데, 그럴 때마다 보람을 느끼게 되었다. (X에서&lt;a href=&quot;https://x.com/jojoldu/status/1810479358207009267&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; 바이럴 된 글&lt;/a&gt;) 하반기로 접어들면서 회사일이 바빠져서 멘토링 비중을 확 줄이게 되었는데, 멘토링을 통해서 새로운 분들도 많이 만나고 나에게도 한 해 동안 긍정적인 영향을 미쳤던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글을 적고 있는 중에 25년이 밝아 왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회고는 치열하게 살아 왔던 한 해를 머릿속에서 흐릿해지는 기억을 잡아두기 위해서 적게 되는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내년에는 더 좋은 일들과 행복한 이야기들이 회고 내용에 가득했으면 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아듀! 2024!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고</category>
      <category>2024</category>
      <category>회고</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/149</guid>
      <comments>https://anyjava.tistory.com/149#entry149comment</comments>
      <pubDate>Tue, 31 Dec 2024 23:56:34 +0900</pubDate>
    </item>
    <item>
      <title>작은 성공 경험을 해보는 것.</title>
      <link>https://anyjava.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근에&amp;nbsp;가장&amp;nbsp;생각을&amp;nbsp;많이&amp;nbsp;하는&amp;nbsp;고민이다.&amp;nbsp;성공&amp;nbsp;경험을&amp;nbsp;해본&amp;nbsp;사람과&amp;nbsp;안&amp;nbsp;해본&amp;nbsp;사람의&amp;nbsp;차이는&amp;nbsp;당면한&amp;nbsp;어려운&amp;nbsp;문제에&amp;nbsp;대해서&amp;nbsp;대처하는&amp;nbsp;방법이&amp;nbsp;다르다고&amp;nbsp;생각한다.&amp;nbsp;지금&amp;nbsp;이&amp;nbsp;문제를&amp;nbsp;해결&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;문제인가?&amp;nbsp;아니면&amp;nbsp;해결&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;문제인가?&amp;nbsp;작은&amp;nbsp;성공&amp;nbsp;경험들&amp;nbsp;그리고&amp;nbsp;큰&amp;nbsp;성공&amp;nbsp;경험을&amp;nbsp;가지고&amp;nbsp;있다면,&amp;nbsp;어려운&amp;nbsp;문제가&amp;nbsp;눈&amp;nbsp;앞에&amp;nbsp;닥쳐도&amp;nbsp;&quot;하면&amp;nbsp;돼지&quot;라는&amp;nbsp;마인드로&amp;nbsp;그&amp;nbsp;문제를&amp;nbsp;해결해&amp;nbsp;나갈&amp;nbsp;수&amp;nbsp;있다고&amp;nbsp;생각한다.&lt;br /&gt;&lt;br /&gt;대학 사물놀이 동호회에서 대회 연습을 하고 있었다. 상모를 돌리면서 각 악기를 쳐야하는 고난도 미션이 주어졌었다. 연습을 하다가 대회를 준비하는 선배가 나에게 벚꾸수(상모 수)를 해보는게 어떻냐고 제안을 했다. 그 때 나의 실력은 상모를 이제 막 돌릴 수 있는 단계였는데, 훨씬 더 어려운 제안이 왔었다. 그 제안 이 후 저녁 연습때 마다 이 악물고 연습을 했고, 결과는 선배에게 실력도 인정 받고 대회에 나가서 1등을 하게 되었다. 이 경험은 내가 노력하면 안되는게 없다는 자신감을 가지게 해주었다.&lt;br /&gt;&lt;br /&gt;일을&amp;nbsp;할&amp;nbsp;때도&amp;nbsp;마찬가지다.&amp;nbsp;페어코딩으로&amp;nbsp;개발을&amp;nbsp;하면&amp;nbsp;흔히&amp;nbsp;개발&amp;nbsp;속도가&amp;nbsp;느려진다고&amp;nbsp;한다.&amp;nbsp;하지만&amp;nbsp;나의&amp;nbsp;팀장님은&amp;nbsp;이미&amp;nbsp;경험해&amp;nbsp;보았고,&amp;nbsp;그&amp;nbsp;경험을&amp;nbsp;바탕으로&amp;nbsp;우리팀에게&amp;nbsp;일정이&amp;nbsp;빡빡한&amp;nbsp;프로젝트에서도&amp;nbsp;페어코딩으로&amp;nbsp;개발을&amp;nbsp;꿋꿋하게&amp;nbsp;진행하셨다.&amp;nbsp;주변에서&amp;nbsp;걱정어린&amp;nbsp;시선으로&amp;nbsp;팀을&amp;nbsp;바라&amp;nbsp;보았지만,&amp;nbsp;우리&amp;nbsp;팀은&amp;nbsp;프로젝트를&amp;nbsp;성공적으로&amp;nbsp;해&amp;nbsp;낼&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;이&amp;nbsp;경험도&amp;nbsp;나에게는&amp;nbsp;일에&amp;nbsp;대한&amp;nbsp;엄청난&amp;nbsp;자신감을&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;도움이&amp;nbsp;되었다.&lt;br /&gt;&lt;br /&gt;어두운&amp;nbsp;미래에&amp;nbsp;대해서&amp;nbsp;비관적으로&amp;nbsp;걱정만&amp;nbsp;하는게&amp;nbsp;아니라.&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;해보자라는&amp;nbsp;기세를&amp;nbsp;가지는게&amp;nbsp;중요하다고&amp;nbsp;생각한다.&amp;nbsp;그러면&amp;nbsp;안될&amp;nbsp;일&amp;nbsp;도&amp;nbsp;되게&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;해내고&amp;nbsp;나면&amp;nbsp;엄청난&amp;nbsp;성취감을&amp;nbsp;맞&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;것이다.&amp;nbsp;지금&amp;nbsp;눈&amp;nbsp;앞에&amp;nbsp;어려움이&amp;nbsp;있다면,&amp;nbsp;걱정&amp;nbsp;하지말고&amp;nbsp;그냥&amp;nbsp;해보자.&amp;nbsp;하다&amp;nbsp;보면&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;된다.&lt;/p&gt;</description>
      <category>생각정리</category>
      <category>경험</category>
      <category>성공</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/148</guid>
      <comments>https://anyjava.tistory.com/148#entry148comment</comments>
      <pubDate>Wed, 20 Nov 2024 08:48:14 +0900</pubDate>
    </item>
    <item>
      <title>스프링 테스트에서 @Transactional 사용에 대한 의견들</title>
      <link>https://anyjava.tistory.com/147</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재민님, 향로님, 토비님이 스프링 테스트에 대한 @Transactional 사용에 대한 의견들을 남겨주셨다. 모두 너무 정성들여 적으글들이라 한번에 모아서 읽어 보시면 Spring Test 시 @Transactional 사용에 대한 다양한 의견을 통해 DB 를 이용한 통합테스트에 대한 시각이 넓힐수 있을 것이다. 저도 몰랐던 사실을 많이 알게 되어 블로그와 영상으로 공유해주신 분들에게 감사한 말씀을 드립니다. :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;재민님의 &lt;b&gt;'테스트에서 @Tansactional을 사용해야할까'&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/PDhN6aiF7QQ?si=4Go7aqNAAL9wGrY8&quot;&gt;https://youtu.be/PDhN6aiF7QQ?si=4Go7aqNAAL9wGrY8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;향로님 &lt;b&gt;'테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각'&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jojoldu.tistory.com/761&quot;&gt;https://jojoldu.tistory.com/761&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;토비님의 &lt;b&gt;'테스트가 관리하는 트랜잭션 - 향로 님의 @Transactional 글을 읽고'&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tobyepril.tistory.com/m/8&quot;&gt;https://tobyepril.tistory.com/m/8&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 제의견을 적어보면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 통합테스트 보단 Unit Test 에서 더 시간을 할애하는 편이고 Framework 에 의존하지 않는 테스트 코드를 작성하려고 한다. (최근 Spring -&amp;gt; NestJS 넘어오면서 더 그렇게 느끼기도 함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토비님의 글 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;트랜잭션 자체에 대한 테스트는 매우 어렵고 번거롭고 때론 불가능하기 때문이다. 어떤 기술의 트랜잭션 관리 기능을 테스트하는 거야 적절한 학습 테스트를 만들면 된다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부분이 가장 공감된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분의 의견은 어떠신가요? :)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Unit Test</category>
      <category>Spring</category>
      <category>test</category>
      <category>Transational</category>
      <category>테스트</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/147</guid>
      <comments>https://anyjava.tistory.com/147#entry147comment</comments>
      <pubDate>Mon, 4 Mar 2024 09:35:30 +0900</pubDate>
    </item>
    <item>
      <title>자바에서 클래스를 활용한 사용자 정의 타입으로 코드 가독성과 신뢰성 높이기</title>
      <link>https://anyjava.tistory.com/146</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자바나 다른 새로운 프로그래밍 언어를 배우면서 사용자 정의 타입을 만들고 사용하는 기법을 배우게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에서 가장 쉽게 사용할 수 있는 것은 클래스(class)입니다. 자바는 모든 것이 클래스로 구성되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면, 사용자 정의 타입(이하 클래스)을 어떻게 활용할 수 있을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 클래스를 사용하여 어떻게 신뢰성 있는 프로그램 코드를 작성할 수 있을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이러한 개념을 실제 코드 예제를 통해 더 자세히 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계좌번호, 전화번호, 카드번호 등은 실무에서 반드시 암호화하여 데이터베이스에 저장해야 하는 정보입니다. 따라서 개발 시 많은 개발자들이 평문으로 된 계좌번호 등을 암호화하여 사용하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드에서는 &lt;b&gt;cardNumber가&lt;/b&gt; 암호화된 상태인지, 복호화된 상태인지 알기 어렵습니다. API로부터 정보를 받아온 경우 이 구분이 더욱 어려워질 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708429522459&quot; class=&quot;java&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;class PaymentService {
  public void pay(String cardNumber, int payAmount) {
    // ...
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 역시 실무에서 비슷한 경험을 했습니다. 암호화된 값을 기대하며 사용했으나 실제로는 평문이었기 때문에 런타임 오류를 겪었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;『클린 코드(Clean Code)』&lt;/b&gt;라는 책에서는 &lt;u&gt;&lt;b&gt;코드를 읽는 시간 대비 작성하는 시간의 비율이 대략 10:1&lt;/b&gt;&lt;/u&gt;을 넘는다고 언급합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그래서 명확한 타입을 이용해서 코드를 읽는 사람이 빠르게 인지할 수 있게 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;예를 들어, String value = &quot;100&quot;보다는 int value = 100과 같이 정확한 타입을 사용하는 것이 코드를 읽기에 더 편리하며, 이로 인해 사칙연산을 적용할 수 있다는 기대감이 자연스럽게 생깁니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;자 그럼 다음 예제 코드를 보시죠. (&lt;a href=&quot;https://github.com/anyjava/blog_code/blob/main/src/main/java/net/anyjava/blogcode/ecrypt/PasswordEncryptor.java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;전체코드&lt;/a&gt;) (&lt;a href=&quot;https://github.com/anyjava/blog_code/blob/main/src/test/java/net/anyjava/blogcode/ecrypt/Sha256EncryptorTest.java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;테스트코드&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708607180992&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package net.anyjava.blogcode.ecrypt;

import org.springframework.stereotype.Component;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.util.Base64;

@Component
public class CardNumberEncryptor {
    private final String key = &quot;1234567890123456&quot;;
    private final String iv = key.substring(0, 16); // 16byte

    // AES 암호화
    EncryptCardNumber encrypt(PlainCardNumber plainCardNumber) {
        try {
            Cipher cipher = Cipher.getInstance(&quot;AES/CBC/PKCS5Padding&quot;);
            SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), &quot;AES&quot;);
            IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivParamSpec);

            byte[] encrypted = cipher.doFinal(plainCardNumber.getPassword().getBytes(&quot;UTF-8&quot;));
            return EncryptCardNumber.of(Base64.getEncoder().encodeToString(encrypted));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    // AES 복호화
    PlainCardNumber decrypt(EncryptCardNumber encryptedData) {
        try {
            Cipher cipher = Cipher.getInstance(&quot;AES/CBC/PKCS5Padding&quot;);
            SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), &quot;AES&quot;);
            IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParamSpec);

            byte[] decodedBytes = Base64.getDecoder().decode(encryptedData.getPassword());
            byte[] decrypted = cipher.doFinal(decodedBytes);
            return PlainCardNumber.of(new String(decrypted));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드에서 주목해야할 부분은 파라미터와 반환 타입으로 String 대신 사용자 정의 클래스인 &lt;b&gt;PlainCardNumber&lt;/b&gt;와 &lt;b&gt;EncryptCardNumber&lt;/b&gt;를 사용합니다. 이 컴포넌트를 통해 암호화와 복호화를 진행함으로써, 사용자는 타입을 통해 카드 번호가 암호화되었는지 여부를 쉽게 구분할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 정의 타입을 정의해 사용하면, 테스트의 용이성이 향상되고 코드의 가독성도 더욱 높아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 계좌번호나 회계시스템을 다룰 때, 공급가액과 부가세는 항상 함께 다뤄지므로, long saleAmount, long vatAmount로 파라미터를 전달하기보다는, saleAmount와 vatAmount를 속성으로 갖는 Revenue라는 클래스를 정의해 사용하는 것이 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로, 사용자 정의 타입을 활용함으로써 우리는 코드의 가독성과 신뢰성을 높이고, 보다 효과적으로 데이터를 관리할 수 있습니다. 작은 단계부터 시작하여 이러한 접근 방식을 점진적으로 적용해보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unit Test</category>
      <category>객체지향</category>
      <category>추상화</category>
      <category>테스트</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/146</guid>
      <comments>https://anyjava.tistory.com/146#entry146comment</comments>
      <pubDate>Tue, 20 Feb 2024 20:51:43 +0900</pubDate>
    </item>
    <item>
      <title>코드 신뢰성 향상: 올바른 데이터 타입 사용하기! (DateType편)</title>
      <link>https://anyjava.tistory.com/145</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;혹시 String createdAt 로 선언하지 사용하지 않으신가요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DateTimeParseException&lt;/b&gt; 으로 고통받고 있지 않으신가요?&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;String&amp;nbsp;타입으로&amp;nbsp;데이터를&amp;nbsp;처리하고&amp;nbsp;있다면&amp;nbsp;버그나&amp;nbsp;Exception&amp;nbsp;이&amp;nbsp;발생하는&amp;nbsp;코드를&amp;nbsp;작성할&amp;nbsp;확률이&amp;nbsp;높아진다.&lt;br /&gt;강타입&amp;nbsp;언어를&amp;nbsp;사용하는&amp;nbsp;장점을&amp;nbsp;전혀&amp;nbsp;활용하고&amp;nbsp;있지&amp;nbsp;못하기&amp;nbsp;때문에&amp;nbsp;적절한&amp;nbsp;타입을&amp;nbsp;사용하는 게&amp;nbsp;중요하다.&lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;도움이&amp;nbsp;되는지는&amp;nbsp;찬찬히&amp;nbsp;설명해&amp;nbsp;보려고&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;java 표준 API 사용되는 타입을 사용한다면 데이터에 대한 &lt;b&gt;유효성 검증&lt;/b&gt;을 library level (정확히는 Type 이 생성되는 시점) 에서 검증이 된다. Exception Handling이나 validation check를 코드를 작성하는 개발자가 직접 하지 않아도 된다는 뜻이다.&lt;br /&gt;그렇다면 &amp;ldquo;9999-99-99&amp;rdquo; 라는 String type 이 있을 경우, 이 변수로 오늘부터 몇이 남았는지 를 구현하게 된다면 어떻게 될까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 아래와 같은 예외를 마주하게 될 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1707034118949&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java.time.format.DateTimeParseException: Text '9999-99-99' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 99

	at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2023)
	at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1958)
	at java.base/java.time.LocalDate.parse(LocalDate.java:430)
	at java.base/java.time.LocalDate.parse(LocalDate.java:415)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;적적한 Exception 처리를 하지 않았다면, 서비스에서 에러가 발생할 것이다. 예외가 발생한 라인에 validation 코드를 적절히 처리했다고 해도, String type의 날짜 문자열이 코드에 존재하는 한 언제 가는 또 발생할 수 있다. 그리고 API request의 parameter 나 request body로 데이터가 전달되었다면, 디버깅을 하고 어떤 API 요청이 왔는지 찾는데 시간이 걸릴 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(참고로 Json 은 Number, boolean, String type 만 표현이 가능하다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;그렇다면,&amp;nbsp;처음부터&amp;nbsp;LocalDate&amp;nbsp;type&amp;nbsp;을&amp;nbsp;사용하면&amp;nbsp;어떻게&amp;nbsp;될까?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;WebApplication을&amp;nbsp;개발하는&amp;nbsp;상황에서&amp;nbsp;데이터가&amp;nbsp;생성되는&amp;nbsp;상황은&amp;nbsp;외부&amp;nbsp;시스템에&amp;nbsp;의존된&amp;nbsp;상황이다.&amp;nbsp;&lt;br /&gt;좀 더 쉽게 설명을 한다면, HTTP API request 시 파라미터로 전달받거나, DB에서 조회해 올 수가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 베이스의 경우에는 Date type 이 있기때문에 해당 타입의 칼럼을 사용하면 좋다. &lt;br /&gt;그렇다면 HTTP request 에서는 어떻게 처리할 수 있을까?&lt;br /&gt;&lt;br /&gt;LocalDate createdAt 으로 타입을 선언한다면 쉽게 반영이 된다. 그렇게 사용한다면 Framework 혹은 언어 Level에서 타입의 안정성을 보장해 준다.&lt;br /&gt;하지만&amp;nbsp;현실세계는&amp;nbsp;그렇게&amp;nbsp;호락호락하지&amp;nbsp;않다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;2000.01.01&quot;&amp;nbsp; &quot;2000/10/01&quot; 과 같이 다양한 문자열형태로 인터페이스를 하고 있을지도 모른다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 예제 코드 이다.&lt;/p&gt;
&lt;pre id=&quot;code_1707034576709&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package net.anyjava.blogcode.controller;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;

@RestController
public class LocalDateController {

    @GetMapping(&quot;/localdate-default&quot;)
    public LocalDate localDateDefault(@RequestParam LocalDate createdAt) {
        return createdAt;
    }

    @GetMapping(&quot;/localdate&quot;)
    public LocalDate localDate(
            @DateTimeFormat(pattern = &quot;yyyy.MM.dd&quot;)
            @RequestParam LocalDate createdAt) {
        return createdAt;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위 Controller 코드에 대한 테스트 코드는 &lt;a href=&quot;https://github.com/anyjava/blog_code/blob/main/src/test/java/net/anyjava/blogcode/controller/LocalDateControllerTest.java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub에서&lt;/a&gt; 확인하길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드처럼 내가 운영하는 시스템에서 Input 이 되는 지점부터 정확한 타입을 사용한다면, 에러상황을 사전에 예방할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지 않고 String type의 date 형태의 문자열을 시스템에 전반적인 영역에서 사용된다면 언제든지 DateTimeParseException의 고통에서 자유로울 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강타입언어를 사용한다면, Stirng에 타입에 &quot;2022-01-01&quot;, &quot;Y&quot;, &quot;N&quot;, &quot;10.9&quot;처럼 동적 타입처럼 사용하지 않길 바란다. 나도 개발하면서 4,5년 차에 알게 되었다. 이제부터라도 제대로 된 타입을 사용하기 위해 노력해 보길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 간단하게 Language에서 제공하는 기본 타입에 대해서 설명을 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음번에는 우리가 직접 만드는 Class를 어떻게 적절하게 타입을 사용할 수 있게 되는지 글을 작성해 보려고 한다.&lt;/p&gt;</description>
      <category>Unit Test</category>
      <category>java</category>
      <category>Spring</category>
      <category>test</category>
      <category>type</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/145</guid>
      <comments>https://anyjava.tistory.com/145#entry145comment</comments>
      <pubDate>Sun, 4 Feb 2024 17:44:13 +0900</pubDate>
    </item>
    <item>
      <title>UnitTest 로 빠른 피드백 얻기 - Prisma 버젼 Update 사례</title>
      <link>https://anyjava.tistory.com/144</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Prisma의 주요 단점 중 하나는 JOIN 절이 지원되지 않았던 것이었다. 이 문제는 최근 &lt;a href=&quot;https://github.com/prisma/prisma/releases/tag/5.7.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;5.7 버젼&lt;/a&gt;에서 FeaturePreview로 추가되었고, 이 소식을 듣고 반가운 마음에 즉시 적용을 시작했다. 이렇게 고민 없이 적용할 수 있는 이유는 바로 테스트에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 대부분은 주요 라이브러리의 버전 업데이트를 하지 않거나, 할 경우에도 매우 보수적으로 진행하는 경향이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 어떻게 진행했는지 진행과정을 공유해 보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 패키지 업데이트 &amp;amp; 전체 테스트 수행&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;패키지 매니져를 통해서 업데이트를 하고 모든 테스트를 수행했지만, 실패하는 테스트 케이스는 없었다. 일단은 안심이다. 아직 추가된 Feature를 사용하지 않아서 쉽게 성공했을 수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 기능 리팩토링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이제&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;Repository&amp;nbsp;를&amp;nbsp;구현체를&amp;nbsp;새롭게&amp;nbsp;추가된&amp;nbsp;Join을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;리팩토링을&amp;nbsp;해나갔다.&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;케이스에서&amp;nbsp;무난이&amp;nbsp;통과했고&amp;nbsp;다음&amp;nbsp;케이스를&amp;nbsp;작업을&amp;nbsp;진행했지만,&amp;nbsp;에러에&amp;nbsp;직면하게&amp;nbsp;되었다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Inconsistent&amp;nbsp;column&amp;nbsp;data:&amp;nbsp;Unexpected&amp;nbsp;conversion&amp;nbsp;failure&amp;nbsp;from&amp;nbsp;String(2023-12-06T17:43:39.515686+00:00)&amp;nbsp;to&amp;nbsp;DateTime.&amp;nbsp;Reason:&amp;nbsp;$trailing&amp;nbsp;input&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Github Issues 에 검색해 봤더니 역시 이미 &lt;a href=&quot;https://github.com/prisma/prisma/issues/22293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;버그 리포팅&lt;/a&gt;되어 있었다. 해당 개발자가 버그를 인지하였고 NativeType 들에 대한 케이스를 놓쳤다고 코멘트를 했다. (&lt;a href=&quot;https://github.com/prisma/prisma/issues/22293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이슈 링크&lt;/a&gt; 참고)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;3. 테스트 코드의 빠른 피드백&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;나는&amp;nbsp;테스트&amp;nbsp;코드를&amp;nbsp;통해서&amp;nbsp;실제&amp;nbsp;프로던션&amp;nbsp;혹은&amp;nbsp;개발서버에&amp;nbsp;코드를&amp;nbsp;배포하지&amp;nbsp;않고도&amp;nbsp;라이브러리의&amp;nbsp;버젼업과&amp;nbsp;새로운&amp;nbsp;기능에&amp;nbsp;대해서&amp;nbsp;테스트를&amp;nbsp;진행할&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;만약&amp;nbsp;테스트코드가&amp;nbsp;없었다면?&amp;nbsp;코드를&amp;nbsp;추가하고&amp;nbsp;Local에서&amp;nbsp;API&amp;nbsp;서버를&amp;nbsp;기동 하고 &amp;nbsp;데이터&amp;nbsp;셋업 후&amp;nbsp;API&amp;nbsp;호출하고&amp;nbsp;문제가&amp;nbsp;발생했는데,&amp;nbsp;어떤&amp;nbsp;부분이&amp;nbsp;문제인지&amp;nbsp;파악하고&amp;nbsp;있었을지도&amp;nbsp;모른다.&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;테스트&amp;nbsp;코드를&amp;nbsp;통해서&amp;nbsp;극도로&amp;nbsp;좁은&amp;nbsp;범위인&amp;nbsp;Repository&amp;nbsp;코드만&amp;nbsp;수행했으며&amp;nbsp;문제가&amp;nbsp;발생하더라도&amp;nbsp;테스트&amp;nbsp;범위가&amp;nbsp;적기&amp;nbsp;때문에&amp;nbsp;고려&amp;nbsp;대상이&amp;nbsp;적다.&amp;nbsp;그리고&amp;nbsp;무엇보다&amp;nbsp;코드&amp;nbsp;변경후&amp;nbsp;수초 안에&amp;nbsp;다시&amp;nbsp;테스트&amp;nbsp;가능하며,&amp;nbsp;심지어&amp;nbsp;디버깅도&amp;nbsp;가능해진다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;우리가 겪는 SpringBoot 1.x 버젼이라 어려워요. Java 버전이 너무 낮아요. 관련된 문제들도 테스트를 작성하면서 조금씩 커버리지를 올리다 보면 과감하게 버전업 할 수 있는 날이 올 것이다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Unit Test</category>
      <category>Prisma</category>
      <category>unittest</category>
      <category>빠른피드백</category>
      <category>테스트코드</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/144</guid>
      <comments>https://anyjava.tistory.com/144#entry144comment</comments>
      <pubDate>Tue, 12 Dec 2023 08:00:02 +0900</pubDate>
    </item>
    <item>
      <title>테스트 코드와의 첫 만남 : 시작과 성장</title>
      <link>https://anyjava.tistory.com/143</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;amp;middot;E 2023-12-11 01.28.19 - A young software developer sitting in front of a computer, deeply focused and writing test code. The background is an office setting with hints of tec.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rsHg4/btsBDNrbWyk/mrc3jLLIBC1babVmlK3Jh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rsHg4/btsBDNrbWyk/mrc3jLLIBC1babVmlK3Jh0/img.png&quot; data-alt=&quot;ChatGPT 로 작성된 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rsHg4/btsBDNrbWyk/mrc3jLLIBC1babVmlK3Jh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrsHg4%2FbtsBDNrbWyk%2Fmrc3jLLIBC1babVmlK3Jh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;amp;middot;E 2023-12-11 01.28.19 - A young software developer sitting in front of a computer, deeply focused and writing test code. The background is an office setting with hints of tec.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ChatGPT 로 작성된 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에&amp;nbsp;작성한&amp;nbsp;테스트&amp;nbsp;관련&amp;nbsp;글이&amp;nbsp;조회수가&amp;nbsp;상당히&amp;nbsp;높았다.&lt;br /&gt;그러나&amp;nbsp;처음부터&amp;nbsp;테스트&amp;nbsp;코드를&amp;nbsp;잘&amp;nbsp;작성했던&amp;nbsp;것은&amp;nbsp;아니었다.&lt;br /&gt;이번&amp;nbsp;기회에&amp;nbsp;과거를&amp;nbsp;돌아보며&amp;nbsp;어떻게&amp;nbsp;공부했는지&amp;nbsp;나누고자&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;나도&amp;nbsp;'TDD&amp;nbsp;by&amp;nbsp;Example'이라는&amp;nbsp;책을&amp;nbsp;통해&amp;nbsp;테스트와&amp;nbsp;처음&amp;nbsp;만났다.&amp;nbsp;회사에서&amp;nbsp;진행한&amp;nbsp;스터디에&amp;nbsp;참여하며&amp;nbsp;테스트에&amp;nbsp;대한&amp;nbsp;이해를&amp;nbsp;높였다.&lt;br /&gt;테스트가&amp;nbsp;프로그램의&amp;nbsp;스펙이라는&amp;nbsp;개념은&amp;nbsp;새롭게&amp;nbsp;다가왔다.&amp;nbsp;Java에서는&amp;nbsp;Junit과&amp;nbsp;Test&amp;nbsp;키워드에&amp;nbsp;익숙했지만,&amp;nbsp;Ruby나&amp;nbsp;다른&amp;nbsp;언어&amp;nbsp;및&amp;nbsp;테스트&amp;nbsp;프레임워크에서는&amp;nbsp;'Spec'을&amp;nbsp;사용하는&amp;nbsp;것도&amp;nbsp;흥미로웠다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;또한,&amp;nbsp;테스트&amp;nbsp;코드에&amp;nbsp;능숙한&amp;nbsp;동료가&amp;nbsp;복잡한&amp;nbsp;부가세&amp;nbsp;계산을&amp;nbsp;위한&amp;nbsp;테스트&amp;nbsp;케이스를&amp;nbsp;작성하며&amp;nbsp;그&amp;nbsp;실행&amp;nbsp;과정을&amp;nbsp;보여주었는데,&amp;nbsp;이는&amp;nbsp;매우&amp;nbsp;인상&amp;nbsp;깊었다.&lt;br /&gt;당시&amp;nbsp;CTO께서는&amp;nbsp;빠른&amp;nbsp;피드백을&amp;nbsp;통해&amp;nbsp;즐거운&amp;nbsp;개발&amp;nbsp;환경을&amp;nbsp;조성한다고&amp;nbsp;말씀하셨는데,&amp;nbsp;이러한&amp;nbsp;변화를&amp;nbsp;실제로&amp;nbsp;피부로&amp;nbsp;느꼈던&amp;nbsp;것이다.&amp;nbsp;(사실&amp;nbsp;그당시에&amp;nbsp;느꼇기&amp;nbsp;보단.&amp;nbsp;지금&amp;nbsp;되돌아&amp;nbsp;보니&amp;nbsp;그랫던것&amp;nbsp;같다.&amp;nbsp;ㅎㅎㅎ)&lt;br /&gt;&lt;br /&gt;그&amp;nbsp;경험&amp;nbsp;이후,&amp;nbsp;나는&amp;nbsp;테스트&amp;nbsp;코드에&amp;nbsp;깊이&amp;nbsp;몰입하게&amp;nbsp;되었다.&amp;nbsp;첫&amp;nbsp;프로젝트에서&amp;nbsp;테스트&amp;nbsp;코드&amp;nbsp;작성을&amp;nbsp;시도했는데,&amp;nbsp;이는&amp;nbsp;내가&amp;nbsp;존경하는&amp;nbsp;시니어&amp;nbsp;개발자와&amp;nbsp;함께한&amp;nbsp;매우&amp;nbsp;만족스러운&amp;nbsp;작업이었다.&amp;nbsp;하지만,&amp;nbsp;나는&amp;nbsp;테스트&amp;nbsp;코드에&amp;nbsp;너무&amp;nbsp;집중하여&amp;nbsp;프로젝트&amp;nbsp;일정이&amp;nbsp;2주나&amp;nbsp;지연되는&amp;nbsp;상황에&amp;nbsp;이르렀다.&lt;br /&gt;&lt;br /&gt;지금&amp;nbsp;생각해보니,&amp;nbsp;주니어&amp;nbsp;개발자로서&amp;nbsp;자주&amp;nbsp;저지르는&amp;nbsp;실수,&amp;nbsp;바로&amp;nbsp;주화입마에&amp;nbsp;빠져&amp;nbsp;테스트&amp;nbsp;코드에&amp;nbsp;과도하게&amp;nbsp;몰두했던&amp;nbsp;것&amp;nbsp;같다.&amp;nbsp;당시&amp;nbsp;함께했던&amp;nbsp;선배&amp;nbsp;개발자는&amp;nbsp;참을성을&amp;nbsp;가지고&amp;nbsp;나를&amp;nbsp;기다려&amp;nbsp;주셨고,&amp;nbsp;그&amp;nbsp;덕분에&amp;nbsp;많이&amp;nbsp;배울&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;그&amp;nbsp;시간들을&amp;nbsp;떠올리면&amp;nbsp;지금도&amp;nbsp;미안함과&amp;nbsp;감사함이&amp;nbsp;교차한다.&amp;nbsp;프로젝트를&amp;nbsp;마무리&amp;nbsp;짓고,&amp;nbsp;늦은&amp;nbsp;밤까지&amp;nbsp;이어진&amp;nbsp;퇴근길의&amp;nbsp;대화와&amp;nbsp;그때의&amp;nbsp;공간,&amp;nbsp;분위기는&amp;nbsp;아직도&amp;nbsp;선명하게&amp;nbsp;떠오른다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;설계에&amp;nbsp;대한&amp;nbsp;고민은&amp;nbsp;언제나&amp;nbsp;필요한&amp;nbsp;일이죠.&amp;nbsp;훌륭한&amp;nbsp;설계를&amp;nbsp;위해&amp;nbsp;꾸준히&amp;nbsp;고민하고&amp;nbsp;리팩터링하는&amp;nbsp;것이&amp;nbsp;중요하다고&amp;nbsp;생각해요.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;첫&amp;nbsp;시도에&amp;nbsp;완벽함을&amp;nbsp;기대할&amp;nbsp;수는&amp;nbsp;없다.&amp;nbsp;테스트를&amp;nbsp;하나씩&amp;nbsp;작성하며&amp;nbsp;배우고,&amp;nbsp;실패를&amp;nbsp;경험하며,&amp;nbsp;깨달음을&amp;nbsp;얻으면서&amp;nbsp;어제보다&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;코드를&amp;nbsp;만들어&amp;nbsp;나가는&amp;nbsp;것이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;결론적으로,&amp;nbsp;테스트&amp;nbsp;코드를&amp;nbsp;완벽하게&amp;nbsp;작성하고&amp;nbsp;TDD로&amp;nbsp;개발한다고&amp;nbsp;자신&amp;nbsp;있게&amp;nbsp;말할&amp;nbsp;수는&amp;nbsp;없다.&amp;nbsp;여전히&amp;nbsp;부족함을&amp;nbsp;느끼고&amp;nbsp;있고&amp;nbsp;그래서&amp;nbsp;나는&amp;nbsp;테스트&amp;nbsp;추종자라고&amp;nbsp;소개할&amp;nbsp;뿐이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 내가 7년전에 작성했던 글을 공유한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://techblog.woowahan.com/2504/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://techblog.woowahan.com/2504/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1702225627598&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;첫 Java 프로젝트의 생생한 후기 | 우아한형제들 기술블로그&quot; data-og-description=&quot;{{item.name}} 이번에 처음으로 Java 8 + Spring Boot + JPA 를 이용하여 프로젝트를 진행 하였는데, 그 때 느꼈던 점을 공유 하고자 합니다. 첫 자바 프로젝트 시작과 기대 저는 이전 회사에서는 Java 를 사&quot; data-og-host=&quot;techblog.woowahan.com&quot; data-og-source-url=&quot;https://techblog.woowahan.com/2504/&quot; data-og-url=&quot;https://techblog.woowahan.com/2504/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iMG1G/hyUL5xxiMG/Vhuho80orEzLx9sIsMP1Rk/img.jpg?width=1640&amp;amp;height=856&amp;amp;face=0_0_1640_856,https://scrap.kakaocdn.net/dn/b3baxI/hyUIDQeHTi/pkwreQqsxbJBFGaOo3tVmk/img.jpg?width=1640&amp;amp;height=856&amp;amp;face=0_0_1640_856,https://scrap.kakaocdn.net/dn/05sO0/hyUL1aRaME/OV33OhCyBYtKjUUnxQ1nQ0/img.png?width=1278&amp;amp;height=1222&amp;amp;face=0_0_1278_1222&quot;&gt;&lt;a href=&quot;https://techblog.woowahan.com/2504/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://techblog.woowahan.com/2504/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iMG1G/hyUL5xxiMG/Vhuho80orEzLx9sIsMP1Rk/img.jpg?width=1640&amp;amp;height=856&amp;amp;face=0_0_1640_856,https://scrap.kakaocdn.net/dn/b3baxI/hyUIDQeHTi/pkwreQqsxbJBFGaOo3tVmk/img.jpg?width=1640&amp;amp;height=856&amp;amp;face=0_0_1640_856,https://scrap.kakaocdn.net/dn/05sO0/hyUL1aRaME/OV33OhCyBYtKjUUnxQ1nQ0/img.png?width=1278&amp;amp;height=1222&amp;amp;face=0_0_1278_1222');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;첫 Java 프로젝트의 생생한 후기 | 우아한형제들 기술블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;{{item.name}} 이번에 처음으로 Java 8 + Spring Boot + JPA 를 이용하여 프로젝트를 진행 하였는데, 그 때 느꼈던 점을 공유 하고자 합니다. 첫 자바 프로젝트 시작과 기대 저는 이전 회사에서는 Java 를 사&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;techblog.woowahan.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unit Test</category>
      <category>unittest</category>
      <category>경험</category>
      <category>테스트코드</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/143</guid>
      <comments>https://anyjava.tistory.com/143#entry143comment</comments>
      <pubDate>Mon, 11 Dec 2023 08:00:24 +0900</pubDate>
    </item>
    <item>
      <title>성공한 삶</title>
      <link>https://anyjava.tistory.com/142</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edu-lauton-TyQ-0lPp6e4-unsplash.jpg&quot; data-origin-width=&quot;8073&quot; data-origin-height=&quot;5490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9mni/btsAZ8u7348/aLn9QW94hDDm3w83pAeZsK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9mni/btsAZ8u7348/aLn9QW94hDDm3w83pAeZsK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9mni/btsAZ8u7348/aLn9QW94hDDm3w83pAeZsK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9mni%2FbtsAZ8u7348%2FaLn9QW94hDDm3w83pAeZsK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;8073&quot; height=&quot;5490&quot; data-filename=&quot;edu-lauton-TyQ-0lPp6e4-unsplash.jpg&quot; data-origin-width=&quot;8073&quot; data-origin-height=&quot;5490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진: &lt;a href=&quot;https://unsplash.com/ko/%EC%82%AC%EC%A7%84/frau-mit-braunem-regenschirm-TyQ-0lPp6e4?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash&quot;&gt;Unsplash&lt;/a&gt;의&lt;a href=&quot;https://unsplash.com/ko/@edulauton?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash&quot;&gt;Edu Lauton&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;성공이란&amp;nbsp;당신&amp;nbsp;삶의&amp;nbsp;목&amp;nbsp;적을&amp;nbsp;깨닫고,&amp;nbsp;당신의&amp;nbsp;잠&amp;nbsp;재력을&amp;nbsp;전부&amp;nbsp;발휘하고,&amp;nbsp;남들에게&amp;nbsp;도움이&amp;nbsp;되는&amp;nbsp;씨를&amp;nbsp;뿌리는&amp;nbsp;것이다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;오늘&amp;nbsp;아침&amp;nbsp;알라미&amp;nbsp;앱에서&amp;nbsp;기상미션을&amp;nbsp;하다가&amp;nbsp;알게 된&amp;nbsp;&amp;nbsp;글귀이다.&amp;nbsp;성공을&amp;nbsp;어떻게&amp;nbsp;정의해야&amp;nbsp;할까?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;오늘&amp;nbsp;본&amp;nbsp;이&amp;nbsp;내용이&amp;nbsp;가슴을&amp;nbsp;울리게&amp;nbsp;만드는&amp;nbsp;내용이라&amp;nbsp;내&amp;nbsp;생각을&amp;nbsp;적어보려&amp;nbsp;한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;삶의&amp;nbsp;목적&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;나의&amp;nbsp;삶의&amp;nbsp;목적은&amp;nbsp;재밌는&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;것이다.&amp;nbsp;시기에&amp;nbsp;따라&amp;nbsp;행복한&amp;nbsp;삶일&amp;nbsp;때도&amp;nbsp;있었지만,&amp;nbsp;바뀐다고&amp;nbsp;무슨&amp;nbsp;문제가&amp;nbsp;있겠나.&amp;nbsp;삶의&amp;nbsp;대부분을&amp;nbsp;집과&amp;nbsp;회사에서&amp;nbsp;보내는데,&amp;nbsp;가족과의&amp;nbsp;행복,&amp;nbsp;일터에서&amp;nbsp;재밌게&amp;nbsp;보내려고&amp;nbsp;한다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;삶의&amp;nbsp;목적을&amp;nbsp;고민해&amp;nbsp;보라.&amp;nbsp;그렇다면&amp;nbsp;선택에&amp;nbsp;있어서&amp;nbsp;더&amp;nbsp;쉬워진다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;잠재력을&amp;nbsp;전부&amp;nbsp;발휘&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;나의&amp;nbsp;잠재력의&amp;nbsp;끝은&amp;nbsp;어디일까.&amp;nbsp;나의&amp;nbsp;잠재력의&amp;nbsp;한계를&amp;nbsp;알고&amp;nbsp;눈을&amp;nbsp;감을&amp;nbsp;수&amp;nbsp;있으려나?&amp;nbsp;나는&amp;nbsp;아직도&amp;nbsp;나의&amp;nbsp;잠재력이&amp;nbsp;있다고&amp;nbsp;판단하고,&amp;nbsp;잠재력을&amp;nbsp;발휘하기&amp;nbsp;위해&amp;nbsp;최선울&amp;nbsp;다하고&amp;nbsp;있다.&amp;nbsp;어제의&amp;nbsp;나보다 더&amp;nbsp;나은&amp;nbsp;오늘의&amp;nbsp;내가&amp;nbsp;멋지다고&amp;nbsp;생각한다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;남들에게&amp;nbsp;도움이&amp;nbsp;되는&amp;nbsp;씨앗&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;가장&amp;nbsp;마음에&amp;nbsp;와&amp;nbsp;닫는&amp;nbsp;문구였다.&amp;nbsp;최근에&amp;nbsp;집중하고&amp;nbsp;있는&amp;nbsp;키워드인데,&amp;nbsp;남들에게&amp;nbsp;도움이&amp;nbsp;되는&amp;nbsp;씨앗을&amp;nbsp;어떻게&amp;nbsp;뿌릴까&amp;nbsp;고민중이다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;나름&amp;nbsp;카카오톡&amp;nbsp;오픈챗에서&amp;nbsp;개발자&amp;nbsp;무료&amp;nbsp;고민&amp;nbsp;상담방도&amp;nbsp;운영하고&amp;nbsp;있다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;그리고&amp;nbsp;같이&amp;nbsp;일하는&amp;nbsp;동료들에게도&amp;nbsp;촤대한&amp;nbsp;도움이&amp;nbsp;되고&amp;nbsp;싶다.&amp;nbsp;(꼰대와&amp;nbsp;지식의&amp;nbsp;나눔 사이에&amp;nbsp;잘&amp;nbsp;위치해야겠지만&amp;hellip;ㅎㅎ)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;마지막으로&amp;nbsp;자주&amp;nbsp;글을&amp;nbsp;적으려고&amp;nbsp;한다.&amp;nbsp;나의&amp;nbsp;지식을&amp;nbsp;온라인&amp;nbsp;공간에&amp;nbsp;올려두면&amp;nbsp;필요한&amp;nbsp;사람들이&amp;nbsp;쉽게&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;된다.&amp;nbsp;대부분이&amp;nbsp;아는&amp;nbsp;내용이라도&amp;nbsp;누군가에게는&amp;nbsp;분명히&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;것이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;여러분도&amp;nbsp;성공한&amp;nbsp;삶을&amp;nbsp;살고&amp;nbsp;계신가요?&lt;/span&gt;&lt;/p&gt;</description>
      <category>생각정리</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/142</guid>
      <comments>https://anyjava.tistory.com/142#entry142comment</comments>
      <pubDate>Tue, 28 Nov 2023 08:37:54 +0900</pubDate>
    </item>
    <item>
      <title>후회하지 않기</title>
      <link>https://anyjava.tistory.com/141</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;예전 메모했던 내용을 소개해보고자 한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여러 가지 일로 바쁠 때는 작은 것 때문에 큰 것을 잃을 수 있습니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;80세가 되어 인생을 뒤돌아볼 때 1994년도 1년 중 하필 왜 보너스 받는 시기를 앞두고 그 순간에 사직서를 냈을까 하고 후회하지는 않을 겁니다. 나중에 나이가 들어 중요하게 생각할 일은 그런 것들이 아니지요. 동시에, 인터넷이 세상을 바꿀 혁명적 사건임을 알면서도 여기에 뛰어들지 않는다면 정말 후회하게 될 것이라 믿었습니다. 이러한 각도에서 생각해보니&amp;hellip;&amp;hellip; 결정을 내리기가 매우 쉬워졌어요.&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;vladislav-babienko-KTpSVEcU0XU-unsplash.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V7A9j/btsAH0JLcnz/gp9c731mXJzh0PSGfgssCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V7A9j/btsAH0JLcnz/gp9c731mXJzh0PSGfgssCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V7A9j/btsAH0JLcnz/gp9c731mXJzh0PSGfgssCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV7A9j%2FbtsAH0JLcnz%2Fgp9c731mXJzh0PSGfgssCK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3780&quot; data-filename=&quot;vladislav-babienko-KTpSVEcU0XU-unsplash.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진: &lt;a href=&quot;https://unsplash.com/ko/%EC%82%AC%EC%A7%84/homem-de-pe-no-meio-da-floresta-KTpSVEcU0XU?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash&quot;&gt;Unsplash&lt;/a&gt;의&lt;a href=&quot;https://unsplash.com/ko/@garri?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash&quot;&gt;Vladislav Babienko&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;배민을 퇴사했을 때 배민을 퇴사한걸 후회하지 않냐고 묻는 사람이 많았었다. 그때마다 위 내용을 이야기해 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;지나간 건 지나간 것일 뿐 나의 선택을 올바른 선택을 만들기 위한 책임은 이제 나의 몫이라 생각한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;지금 내가 할 수 있는 것에 최선을 다하면 80세가 되었을 때 나의 인생 스토리가 완성되지 않을까?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>생각정리</category>
      <category>생각정리</category>
      <category>선택</category>
      <category>후회</category>
      <author>anyjava</author>
      <guid isPermaLink="true">https://anyjava.tistory.com/141</guid>
      <comments>https://anyjava.tistory.com/141#entry141comment</comments>
      <pubDate>Tue, 21 Nov 2023 08:22:15 +0900</pubDate>
    </item>
  </channel>
</rss>