<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jong10 in Wonderland</title>
    <description>&quot;Jongyeol&apos;s programming blog.&quot;
</description>
    <link>http://jong10.com/</link>
    <atom:link href="http://jong10.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 09 Jan 2026 05:16:27 +0000</pubDate>
    <lastBuildDate>Fri, 09 Jan 2026 05:16:27 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>내 첫 제품 실패기</title>
        <description>&lt;p&gt;(쓰레드에 썼던 글을 정리해서 옮겼습니다.)&lt;/p&gt;

&lt;h2 id=&quot;배경&quot;&gt;배경&lt;/h2&gt;

&lt;p&gt;내가 졸업 후 계속 회사를 다니는동안, 한 친구가 여러번의 창업 끝에 한 앱을 시작으로 오랜 고군분투를 거쳐 외부투자 없이 직원 20여명 규모의 회사를 만들었다. 그 친구를 만날때마다 뽐뿌가 생겼다. 나도 언젠간 내 것을 팔고 싶었다. 나도 뭔가 팔려면 앱을 만들어야 하나 싶었다. 하지만, 난 졸업 후 커리어가 잠깐의 임베디드 개발과 대부분의 백엔드 개발 뿐이었다. 클라이언트는, 학생때 안드로이드 앱 개발 외주 했던 것과, 2010~2011년쯤에 친구들과 안드로이드 책을 썼던 것 뿐이다. 그마저 너무 오래되서 쓸모도 없다. 그동안, 내가 직접 내 앱을 팔아본 적이 없었다. 수억명 유저의 요청을 처리하는거나 데이터 샤딩은 많이 해봤어도, 요즘의 앱 개발도 잘 모르고, 더군다나 UI/UX나 마케팅은 더욱 더 몰랐다.&lt;/p&gt;

&lt;p&gt;나도 앱을 직접 팔아보고 싶었는데, 그렇게 개발자 마인드로 타겟을 선정했다. - (실수1)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;구독 모델 (recurring revenue를 위해서)&lt;/li&gt;
  &lt;li&gt;최소의 UI (내가 잘 못해서)&lt;/li&gt;
  &lt;li&gt;글로벌 앱 (한국만 하면 수익내기 더 어려워서)&lt;/li&gt;
  &lt;li&gt;위 두 가지 조건으로, 글자가 적은 앱&lt;/li&gt;
  &lt;li&gt;떡고물 노리고, 전체 매출이 큰 시장 - (실수2)&lt;/li&gt;
  &lt;li&gt;백엔드 경험을 살려서, 서버를 이용하는 것 - (실수3)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;위 조건으로 검토를 하다가 VPN앱을 만들기로 했다. 2018년말이었다. 회사를 다니며 야근도 하고, 주말에 “짬짬히” 코딩을 했다. 평일엔 회사를 다니는 것 만으로도 충분히 바쁘고, 집에 오면 완전히 지치기 때문에 뭔가 하긴 어려웠다. 게다가, 주말 내내 코딩한 것도 아니고, 아내와 시간을 보내기도 하고, 플스 게임을 하기도 하고, 실제 일한 시간은 고작 평균 주당 4시간쯤이었던 것 같다. 그게 3년 넘게 걸릴줄은 몰랐다.&lt;/p&gt;

&lt;p&gt;“이걸 반드시 팔겠다”라는 마음은 별로 없었고, 처음엔 주말 취미 겸 사이드프로젝트 느낌이 더 강했다. 그래서 기술 스택도 여러번 갈아치웠다. iOS앱 개발에 경험이 별로 없었기에 시행착오도 많았다. 스토리보드로 하다가, 너무 불편해서 Flutter로 바꾸고, 다시 그때 SwiftUI가 막 발표되었는데 더 편해보여서 SwiftUI로 바꾸고, 백엔드도 불필요하게 AES GCM 256과 UDP와 TCP에서 다 되는 VPN 프로토콜을 직접 구현하기도 했다. 여기서도 시간을 많이 낭비했다. (실수4)&lt;/p&gt;

&lt;p&gt;웃긴건, 나중에 런칭할땐 정작 WireGuard 프로토콜을 사용했다. 자체 프로토콜에 들인 시간들은 뻘짓이었다.&lt;/p&gt;

&lt;h2 id=&quot;코로나-재택근무-육아휴직&quot;&gt;코로나, 재택근무, 육아휴직&lt;/h2&gt;

&lt;p&gt;그 와중에 코로나가 시작되고, 재택근무를 시작하고, 아이가 태어나고, 그러다가, 1년의 시간이 흘러 아내의 육아휴직이 끝나고 복직하면서 내가 육아휴직을 시작했다. 부자간에 유대를 쌓을 시간도 필요하고, 아내 회사 어린이집은 만1세가 지나야 보낼 수 있어서, 6~7개월 정도동안 누군가가 아이를 봐야 했다. 그렇게 육아휴직을 하고, 낮에 아이를 보다가 아이 낮잠을 잘 때나, 아내 퇴근 후에 밤잠 등 시간 날때마다 틈틈히 코딩을 했는데, 오히려 체력 부족으로 아이와 보내는 시간의 질이 떨어졌다.&lt;/p&gt;

&lt;p&gt;지금 생각해보면, 사이드 프로젝트는 잠깐 접고, 그냥 그때 아이에게 집중할껄 싶다. 그 전의 오랜 재택근무로 인한 나도 인지하지 못 하던 스트레스와, 월화수목금 육아에 대한 스트레스 (정말 힘들다. 3주만에 대상포진이 생겼다.), 거기에 틈틈히 하는 개발이 더딘 것에 대한 스트레스가 아이에게 많이 새어나갔다. 예를 들어, 아이가 평소 낮잠 시간이 되었는데 더 놀고 싶어서 안 자고 짜증내면서 보채면, ‘아 얼른 자야 VPN 개발을 할텐데’하고 생각하면서, 괜히 밉기도 하고 나도 같이 짜증이 많이 났다. 나도 차라리 휴식을 많이 취하고, 좀 더 다정한 아빠였으면 좋았을텐데 싶다.&lt;/p&gt;

&lt;h2 id=&quot;퇴직&quot;&gt;퇴직&lt;/h2&gt;

&lt;p&gt;시간은 빠르게 흘러, 아이가 어린이집에 가고 복직할 날짜가 다가왔다. 다니던 회사는 겸업금지이니깐, 실제로 팔아보려면 퇴직을 해야 했다. LINE은 개발자로 일하기에게 좋은 회사이고, 메시징 서버 조직과 그 안의 Redis유닛 팀도 좋은 환경이었기 때문에, 퇴직여부에 고민이 많이 되었다. 하지만, 이걸 팔아보려면 퇴직을 해야 했다. 회사를 다니면서 몰래 다른 명의로 사업을 한다던가 그런 것은 하고 싶지 않았고, 내가 멀티태스킹을 잘 하는 사람이 아니어서, 회사와 사업을 동시에 잘 할 수 있을 것 같지도 않았다. 마음이 콩밭에 가있으면 어차피 동료들이 금방 눈치챌 것이라고 생각했다. 다들 높은 퍼포먼스를 내는데, 재택이어도, 누가 일을 하는지 안 하는지 쉽게 티가 난다. 10년 후에 동료가 창업한 회사에 내가 말단 직원으로 취직하게 될 지도 모르는데, 투잡 하는 사람으로 기억에 남고 싶진 않았다.&lt;/p&gt;

&lt;p&gt;그럼에도, 기회비용 생각이 많이 들어서, 선뜻 결정하기가 어려웠었다. 이 양 손에 꽉 쥐고 있는 것을 놓아야 새로운 것을 두 손으로 잡을 수 있을텐데, 양 손을 놓기가 겁났다. 한편으론, 나이가 더 들고, 커리어가 더 쌓이고, 직책이 더 높아지고, 연봉이 더 높아지면, 기회비용이 더 커져서, 더욱 커진 그것을 손에서 놓아주는 것이 지금보다 더 무서울 것 같았다. 지금도 못 해본다면, 평생 못 하겠다 싶었다. 기회비용은 지금 이 순간이 가장 낮을때니깐. 그러면, 나중에 100살쯤 되어서 병원에 누워, “아 그때 그냥 해볼껄”하고 후회할 것 같았다. 안 해보고 후회하는 것 보다는, 해보고 후회하는게 낫지 않을까? 인생 뭐 있나. 그렇게, 2022년 3월에 육아휴직 복직 대신 퇴직을 결심했다. 지금 와서 생각해보면, 주말 사이드 프로젝트 3년은 사실은 서비스를 만든 시간이 아니고, 퇴직을 고민하는데 걸린 시간인듯 싶다. 아, 그리고, 아내에게 허락을 받는데 걸린 시간이기도 하다.😅 수년간 창업가 친구 이야길 했더니 아내가 마침내 허락해주었다. 물론, 맞벌이여서, 아내를 믿고 도전을 하는 점도 있었다. 외벌이였으면, 고정 소득이 없다면, 못 해봤을 것 같다. 아무튼, 퇴직을 결정하고, 나를 기다리던 동료들과 보스에게 너무 미안했다. 보스와의 퇴직 면담을 하고나서, 한국,일본에 있는 동료들과 Zoom으로 1:1 미팅을 하면서 퇴직 사실을 알렸다. 코로나 기간이기도 하고, 휴직기간이기도 해서, 멤버들과 오프라인으로 바로 만나진 못 했다. 특히 일본의 멤버들은 나중에도 만나긴 어려울텐데 많이 아쉬웠다. 퇴직 프로세스를 마치고 나니, 홀가분하기도 하고, 굉장히 두렵기도 했다. 한편으론, 런칭하면 잘 될꺼라는 환상이 있어서 기대되기도 했다. 그 환상은 금방 사라졌지만. (그래도 그런 환상이라도 있어야, 눈 딱 감고 질러볼 수 있는 것 같기도 하다.)&lt;/p&gt;

&lt;h2 id=&quot;런칭&quot;&gt;런칭&lt;/h2&gt;

&lt;p&gt;퇴직 후 풀타임으로 1인기업이 되었다. 풀타임이면 10배의 속도로 일할 수 있지 않을까 생각했지만, 그 정도는 아니었다. (참고로, ChatGPT가 나오기 전이었다.) 거의 다 만들었다고 생각했었지만, 실제 출시하려고 보니 여전히 남은 일이 많았다. 백엔드 개발자 출신이라, stateful한 VM의 장애시에 VPN 유저들의 세션들을 graceful하게 마이그레이션 하는 기능도 한 달간 만들었다. (서비스 종료할때까지 그 기능을 쓴 적이 없다. 그냥 한달간의 뻘짓이었다.) 게다가, 애플 앱스토어에 VPN항목은 개인사업자는 올릴 수가 없고 조직만 올릴 수 있어서, 법인도 세워야 했다. 여차저차, 몇 달간 남은 일을 다 작업해서 VPN의 iOS 버전을 먼저 런칭했다. 안드로이드는 PoC만 해봤고, 나중에 할 생각이었다. 백링크를 위해 &lt;a href=&quot;https://www.producthunt.com/products/dino-vpn#dino-vpn&quot;&gt;VPN앱을 Product Hunt에도 올리고&lt;/a&gt;, referer badge를 달기 위해서 어느 온라인 뉴스매체에도 유료로 올렸다.&lt;/p&gt;

&lt;p&gt;VPN은 “떡고물 노리고, 전체 매출이 큰 시장”이라고 했다. 애플 앱스토어에서 1위앱은 월 매출이 20억원, 100위는 월1천만원 정도이다. 이 정도 규모인 시장은 많지 않다. 100위 안이 목표였는데, 2022년 8월에 런칭하고나서 보니, 웬걸, 아무리 개선해도 1,000위 안에도 못 들었다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;앱스토어에 4,000개의 VPN앱들이 있는데, 제품에 딱히 뾰족한 부분도 없고 경쟁력이 없었다. 그냥 4,000개가 4,001개가 된 것이다. - (실수5)&lt;/li&gt;
  &lt;li&gt;아이폰도 안 팔고 앱스토어도 없는 이란엔 당연히 팔지 않았는데 (미국의 제제 대상 국가라서 팔 수도 없다.), 미국 앱스토어의 다운로드의 90%가 이란 IP에서 발생했고, 다들 trial 기간만 사용하고 유료로 전환되지 않았다. 이란 유저들이라 미국 신용카드가 없는게 아닐까 싶었다. 이란 사용량이 높았던 것은 그 당시 &lt;a href=&quot;https://namu.wiki/w/2022%EB%85%84%20%EC%9D%B4%EB%9E%80%20%EC%8B%9C%EC%9C%84&quot;&gt;2022년 이란 시위&lt;/a&gt; 때문이었다. iOS는 미국 시장이 가장 중요한데, 이란으로 인해서, 미국 트래픽의 90%가 허수였다.&lt;/li&gt;
  &lt;li&gt;유료 유저 일부가 중국에 여행 갔더니 안된다고 하는 환불 요청이 많았다. 내가 중국에 살지 않아 어떤 프로토콜이 잘 되는지 테스트하기 어려웠다. 처음에 사용한 WireGuard는 자동 차단되는 프로토콜이었고, 다른 새 프로토콜을 추가하더라도 내가 직접 테스트할 방법이 없었다. - (실수6)&lt;/li&gt;
  &lt;li&gt;참고로, 중국 앱스토어에는 팔지도 않았다. 중국에서 VPN을 팔려면 중국 회사가 있어야 하고, 정부의 허가를 받아야 한다. 그럼에도 사용자들이 다른 국가에서 VPN을 미리 구입하고, 중국으로 출장이나 여행을 갈때 사용했다.&lt;/li&gt;
  &lt;li&gt;경쟁이 치열한 시장이라 구독 가격이 낮아야했다. 경쟁 제품들이 다들 싸게 팔고 있기 때문. - (실수7)&lt;/li&gt;
  &lt;li&gt;경쟁력이 있으려면 서버를 수백개지역에 제공해야 하는데 (실수8), 수백개 지역에 제공하려면 비용 리스크로 1인으로 하기는 어려웠다.&lt;/li&gt;
  &lt;li&gt;일단 처음엔 12개 지역에 서버 운영하고, 점차 늘리고 싶었는데, 순이익이 신통치 않아서 늘리기 어려웠다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;뭔가 개선하려면, 새 프로토콜을 추가하거나, 서버를 수백개 지역에 제공하는 것인데, 후자는 돈이 너무 많이 들어서 하기 어려웠다. 새 프로토콜은 추가하더라도 그게 중국에서 되는지 내가 테스트 하기가 어려웠다. &lt;a href=&quot;https://github.com/net4people/bbs/issues&quot;&gt;ShadowSocks는 된다는 소문이 있었지만, 그것도 안 된다는 리포트도 있었고, 한편으론, 중국에서 딥러닝을 이용해서 특정 패턴을 보이는 패킷을 drop하는 것으로 추정된다는 연구도 있었다. VPN 패킷의 암호화를 풀 수는 없어도, 이게 VPN 패킷인지 추측하는 재미있는 방법들은 여러가지가 있다는 것도 알게되었다.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;추가로, Product Hunt에 올리고 나서, IDC의 IP대역이 아닌, 일반 거주지 IP대역으로 된 VM을 하나에 월 $1000 정도에 팔고 싶다는 콜드메일도 많이 받았다. 그런 시장이 있다는 것도 Product Hunt에 올리고 나서야 알게 되었다. 물론, 내가 쓰긴 너무 비쌌다.&lt;/p&gt;

&lt;h2 id=&quot;런칭-이후&quot;&gt;런칭 이후&lt;/h2&gt;

&lt;p&gt;계속 업데이트하는데도, VPN이 월 매출 50만원, 서버비 50만원, 순이익 0원인 것을 보면서, 많은 생각을 했다. 그제서야 책이나 다른 자료를 좀 더 찾아봤다. 이것들을 첫 코드 한 줄을 쓰기 전에 읽었으면 좋았을텐데. VPN을 만들기로 결심하기 전에 읽었으면 좋았을텐데!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://readmake.com&quot;&gt;The Indie Startup Handbook (Pieter Levels)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;린스타트업 (에릭 리스), 인사이트&lt;/li&gt;
  &lt;li&gt;진화된 마케팅 그로스 해킹 (션 앨리스, 모건 브라운)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://indiehackers.com&quot;&gt;IndieHackers.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://x.com/hashtag/indiehackers&quot;&gt;#IndieHackers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://x.com/hashtag/buildinpublic&quot;&gt;#BuildInPublic&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;20~30여개의 해외 뉴스레터들과 몇몇 팟캐스트들&lt;/li&gt;
  &lt;li&gt;… 등등&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;여러 교훈들을 새겨듣고, 이번엔 VPN과 정 반대로, 경쟁이 거의 없고 서버도 필요 없고 매출도 적은 가장 간단한 기존 앱을 비슷하게 만들어 팔아보는 실험을 했다. 3일동안 만들어서 유료앱으로 올렸다. 그런데, 월5만원이 팔렸다? 두 앱을 비교하면,&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;VPN앱: 주말3년+풀타임5개월 개발, 월매출50만원, 월순이익0원, CS많음&lt;/li&gt;
  &lt;li&gt;다른앱: 3일개발, 월매출5만원, 월순이익5만원&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;교훈&quot;&gt;교훈&lt;/h2&gt;

&lt;p&gt;VPN에 새 프로토콜을 추가는 몇 달이 걸릴 것이고, 중국에서 될지 안 될지도 몰랐다. 한편, 3일 만든 앱은 바로 결과가 나왔다. ROI를 생각하게 됐다. 그래서 다들 그렇게 &lt;a href=&quot;https://www.google.com/search?q=12+startups+in+12+months&quot;&gt;12 startups in 12 months 챌린지&lt;/a&gt;를 하는거였다. 2022년 말, VPN은 버리고 다른 새 제품들의 작업을 하기 시작했다. (나중에, 2023년 5월에, VPN은 연간구독자의 부분 환불을 진행하면서 서비스를 종료했다.)&lt;/p&gt;

&lt;p&gt;첫 제품으로 VPN앱을 해보면서 얻은 교훈들은,&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;대부분 첫 제품은 실패한다. 처음엔 경험 삼아 힘 빼고 간단한 것을 하는게 좋다.&lt;/li&gt;
  &lt;li&gt;런칭이 시작이다. 그 전엔 모르는 정보가 많다.&lt;/li&gt;
  &lt;li&gt;혼자 다 하는건 큰 회사에서 개발자로 일하는 것과 다른 근력을 필요로 한다. 전체 한 사이클을 빨리 경험해봐야 한다. 절대로 개발만 오래 하면 안 된다.&lt;/li&gt;
  &lt;li&gt;(Piter Levels가 했던 말) 자신의 경험에도, 주변 다른 인디해커들의 경험에도, 제품의 95%는 실패한다. 5%만 성공하기 때문에, 1개를 성공하기 위해선 10~30개 정도 런칭해봐야 한다. 그러려면 1달에 1개씩 해야 한다. 제품 1개의 MVP에 너무 오랫동안 만드는 것은 좋은 생각이 아니다.&lt;/li&gt;
  &lt;li&gt;해당 제품군의 마켓에서의 객단가가 중요하다. 극단적으로는, $1짜리를 100명에게 파는 것 보다, $100짜리를 1명에게 파는 것이 더 수월할 수 있다. CS도 더 적다. 그리고, 놀랍게도, 비싼 물건일수록 고객이 불평을 덜 한다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;실패담을 써봤다. 누군가에겐 조언이 될지도 모르겠다. 그런데 사실 나도 주말에 VPN을 몇년간 만들고 있을때, 창업가 친구가, “그거 잠깐 멈추고, 간단한거 한달 만들어서 런칭해보는건 어때?”라고 했었지만, 투입한 시간도 아깝고, 이제 거의 다 만들었다고 생각하고 그 말을 따르지 않았었다. 매몰비용의 오류였다. 그때 멈췄어도 반년 넘게 아꼈을텐데.&lt;/p&gt;

&lt;h2 id=&quot;지금은&quot;&gt;지금은&lt;/h2&gt;

&lt;p&gt;그 전후로, 8개의 제품을 더 만들었고, 그 중에 2개는 reject 먹었고 6개를 출시했다. 그 중 하나는 좀 더 적합한 Product-market fit을 위해 pivot을 했다. 벌써 퇴직 이후로부터 약 2년 10개월째 이 여정을 하고 있다. 아직은 월매출이 2021년의 내 월급보다는 적다. 성장 속도도 상상만큼은 아니다. 그래도 이제 &lt;a href=&quot;https://paulgraham.com/ramenprofitable.html&quot;&gt;Ramen Profitable&lt;/a&gt;은 넘어서서, 최소의 생활비는 나오고 있고, 이 여정의 유지가 가능하다. 1년 전에는 Ramen Profitable도 안 되었는데 나름 성장을 하긴 했다. 이 여정을 언제까지 할 수 있을진 모르겠지만, 꾸준히 하면 점차 올라가지 않을까 싶다. 게다가, 요즘은 한국에서도 Indie Hacker 또는 Solopreneur로 꽤 잘 되고 있는 사람들도 상당히 많아졌다. AI 때문인지 1인개발/인디해커 관련 뉴스레터나 유료 모임도 많아졌다. 아무튼, 나도 조금은 더 이 길을 계속 가보려고 한다.&lt;/p&gt;
</description>
        <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2025/01/23/the-failure-of-my-first-product.html</link>
        <guid isPermaLink="true">http://jong10.com/2025/01/23/the-failure-of-my-first-product.html</guid>
        
        
      </item>
    
      <item>
        <title>RedisConf18 발표 후기</title>
        <description>&lt;p&gt;(개인적으로 중요한 마일스톤이었는데 기록이 없어서, 나중에 글을 추가했습니다.)&lt;/p&gt;

&lt;p&gt;회사의 지원으로 샌프란시스코의 RedisConf18에 발표자로 참가해서, 발표를 하고 왔다. 15년 전쯤엔 모의토익에서 200~300점대였던 영어와 담 쌓았던 사람인데, 내가 영어로 발표를 하다니 감회가 새롭다.&lt;/p&gt;

&lt;p&gt;LINE의 메시징 팀에서 Redis를 어떻게 사용하고 있는지에 대한 발표이다. LINE에서는 하루에 25 billion (250억건)의 메시지를 전송하고 있다. 이게 얼마만큼이냐면, message id가 32bits integer였으면, 매일매일 오버플로우가 난다. 매년 1월 1일의 경우는 새해 축하 메시지로 1초에 42만건을 전송하기도 했다. 메시징의 뒤에선 일반적인 RDBMS 대신 스토리지로서 Redis, HBase, Kafka 등등이 열일하고 있는데, Redis팀 입장에서의 발표라고 보면 된다.&lt;/p&gt;

&lt;p&gt;내용에 사실 내 기여는 그리 많지 않고, LINE이 처음 생겼을때부터 여러 훌륭한 개발자들로부터 쌓여온 시스템들과, 최근에 추가된 것들, 내가 한 것 조금, 이런 것들이 섞여있는 것을 발표자료로서 정리하기만 한, 여러모로 얹혀가는 발표이다. 이거 내가 다 했어요 이런건 전혀 아니다. 80%정도가 포함된 비슷한 내용을 한국에서는 이미 다른 분이 몇 년 전에 했었다. 아무튼 우리 팀이 하고 있는 일에 대한 발표이긴 하다. (메시징 조직에서의 Redis팀이다.)&lt;/p&gt;

&lt;p&gt;자세한 후기 기록은 회사 기술 블로그에 자세히 있어서 링크로 대체.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;한글: &lt;a href=&quot;https://engineering.linecorp.com/ko/blog/presenting-on-redisconf18&quot;&gt;https://engineering.linecorp.com/ko/blog/presenting-on-redisconf18&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;일본어: &lt;a href=&quot;https://engineering.linecorp.com/ja/blog/presenting-on-redisconf18&quot;&gt;https://engineering.linecorp.com/ja/blog/presenting-on-redisconf18&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;영어: &lt;a href=&quot;https://engineering.linecorp.com/en/blog/presenting-on-redisconf18&quot;&gt;https://engineering.linecorp.com/en/blog/presenting-on-redisconf18&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;발표자료:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.slideshare.net/slideshow/redisconf18-redis-at-line-25-billion-messages-per-day/99439316&quot;&gt;https://www.slideshare.net/slideshow/redisconf18-redis-at-line-25-billion-messages-per-day/99439316&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;발표영상:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=IxTUXuoIWro&quot;&gt;https://www.youtube.com/watch?v=IxTUXuoIWro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2018/06/19/presentating-on-redisconf18.html</link>
        <guid isPermaLink="true">http://jong10.com/2018/06/19/presentating-on-redisconf18.html</guid>
        
        
      </item>
    
      <item>
        <title>2016년 컨트리뷰션 기록</title>
        <description>&lt;p&gt;2016년에 github에 남긴 public한 PR 목록. 몇개 안 되네. 1년 참 짧다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/netty/netty/pulls?utf8=%E2%9C%93&amp;amp;q=author%3Ajongyeol%20is%3Aclosed%20closed%3A%222016-01-01%20..%202016-12-31%22&quot;&gt;Netty, 3 PRs, codec-redis 구현.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mp911de/lettuce/pulls?utf8=%E2%9C%93&amp;amp;q=author%3Ajongyeol%20is%3Aclosed%20closed%3A%222016-01-01%20..%202016-12-31%22&quot;&gt;Lettuce, 6 PRs, 버그 수정들과 기능 추가.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/line/armeria/pulls?utf8=%E2%9C%93&amp;amp;q=author%3Ajongyeol%20is%3Aclosed%20closed%3A%222016-01-01%20..%202016-12-31%22&quot;&gt;Armeria, 4 PRs, 사소한 개선?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 06 Jan 2017 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2017/01/06/my-contributions-in-2016.html</link>
        <guid isPermaLink="true">http://jong10.com/2017/01/06/my-contributions-in-2016.html</guid>
        
        
      </item>
    
      <item>
        <title>I migrated my blog</title>
        <description>&lt;p&gt;지난 몇 년간, 블로그에 글이 뜸했다. 특히, 마지막 글 이후로, 내게 많은 일들이 있었다. 요약하면, 작년 여름에는 결혼을 하고 행복한 신혼 생활을 보내고 있고, 올해 초에는 이직을 했고, 정말 뛰어나고 배울 점이 많은 사람들과 함께 즐겁게 개발을 하고 있다.&lt;/p&gt;

&lt;p&gt;이제와서 블로그에 글을 자주 쓸지는 모르겠지만, 결국 블로그를 또 옮기고야 말았다. Tumblr에서 탈출해서 jekyll을 사용한 github-page로 옮겼다. 옮기면서, 흑역사가 포함된 일기 느낌의 글들을 80% 정도 지웠고, 40개 정도의 글이 살아남았다.&lt;/p&gt;

&lt;p&gt;RSS의 주소는 예전 그대로 &lt;a href=&quot;http://feeds.feedburner.com/jong10&quot;&gt;http://feeds.feedburner.com/jong10&lt;/a&gt; 이다. 요즘 세상에 아직도 RSS리더를 사용하는 사람들이 많은지는 모르겠지만, 구독하는 분은 주소를 바꿀 필요는 없다. disqus는 조만간 달아놓을 예정이다.&lt;/p&gt;
</description>
        <pubDate>Sun, 10 Jul 2016 12:49:12 +0000</pubDate>
        <link>http://jong10.com/2016/07/10/migrated-my-blog.html</link>
        <guid isPermaLink="true">http://jong10.com/2016/07/10/migrated-my-blog.html</guid>
        
        
      </item>
    
      <item>
        <title>빛은 충분히 빠르지 않다.</title>
        <description>&lt;p&gt;몇달 전, 철권 네트웍 플레이를 하면서 그런 생각이 들었다. 빛은 1초에 지구를 7.5바퀴 돈다고 알려져 있다. 반대로 말하면, 지구를 한 바퀴 도는데에 약 133.333ms 정도가 걸린다. 클라이언트와 서버가 정확히 지구 반대편에 있다면, 기술이 아무리 발전하더라도 request부터 response까지의 레이턴시를 133.333ms 이하로 줄일 수가 없다. 오버헤드가 0 이고, 지구 전체가 광랜이라고 하더라도.&lt;/p&gt;

&lt;p&gt;격투 게임이나 FPS게임들은 1초에 60프레임으로 구성되어 있는데, 한 프레임에 약 16.666ms 정도라고 할 수 있다. 왕복 133.333ms 이면 약 4프레임이 지나간 후에야 첫번째 프레임에 대한 정보가 지구 반대편에 도착하고, 그에 대한 반응이 다시 4프레임 후에 출발지로 돌아온다. 8프레임 정도가 약 133.328ms 인데, 철권에선 4프레임 안에 주먹을 눌러야 초풍신이 나갈 정도로, 8프레임 정도면 인간이 체감할 수도 있는 의미가 있는 시간이다. 그래서 대부분의 게임들은, 각 지역별로 서버를 운영해서 물리적인 거리를 줄이는 것으로 타협을 한다. 그래도 latency가 1프레임 이하로 떨어지긴 현실적으로 어렵다. 통신매체로 빛을 사용하더라도 그렇다. 물론, 서로 다른 대륙의 플레이어가 FPS같은 것을 같이 하기란 매우 어렵다. 상당한 렉을 경험할 것이다.&lt;/p&gt;

&lt;p&gt;미래에 이것이 개선될 수 있을까? 빛보다 빠른 이론적인 가상의 물질로 타키온(tachyon)이라는 것이 있다. 2011년 9월 22일에 CERN(유럽 입자 물리 연구소)은 빛보다 빠른 중성미자를 발견했다고 했으나, 이는 장비 오류였던 것으로 밝혀졌다. 만약, (아직 존재가 입증되지 않은) 타키온이 실존한다고 치자. 133.333ms 이하로 통신을 하려면 빛보다 빠른 타키온을 이용해야 한다. 빛보다 빠르다. 상대성이론에 따라서 패킷이 과거로 가는건가? 잘 모르겠지만, 그렇다고 치자. request를 보내지 않았는데 response가 먼저 돌아오는건가? 그럼, 난 이미 response를 받았으니깐 request를 안 보내도 되나? 그럼 request가 없었으니 response가 존재하지 않는건가? 이런걸 time paradox라고 한다. 빛보다 빠르면 시간이 거꾸로 가는 것이 맞는지 아닌지도 헷갈리긴 하지만, 어쨌든간에, 타키온 이론에서도 타키온이 존재하더라도 정보를 전송할 수는 없다고 한다. 안타깝게도, 빛보다 빠른 이론적인 물질을 통해서도 통신은 불가능하다.&lt;/p&gt;

&lt;p&gt;기술이 충분히 발전한 먼 미래에도, 지구 반대편과의 network latency를 133.333ms 이하로 줄일 수는 없을 것이다. bandwidth는 늘어나겠지만 latency를 줄일 수는 없다. 그리고 이 물리적인 latency 제한은 소프트웨어 엔지니어들에게 영원한 짐이 될 것이다. 이게 다 빛이 충분히 빠르지 않기 때문이다.&lt;/p&gt;
</description>
        <pubDate>Sat, 16 May 2015 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2015/05/16/light-is-not-fast-enough.html</link>
        <guid isPermaLink="true">http://jong10.com/2015/05/16/light-is-not-fast-enough.html</guid>
        
        
      </item>
    
      <item>
        <title>2014년의 개인 컨트리뷰션 기록</title>
        <description>&lt;p&gt;한 손으로 셀 수 있을 정도이지만, 보낸 패치가 merge된 것은 올해(2014년)가 처음이라 기념으로 남긴다. Netty 3개, Dynomite 1개.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;11/14 - https://github.com/netty/netty/commit/28c388e525&lt;/li&gt;
  &lt;li&gt;11/07 - https://github.com/Netflix/dynomite/commit/0e7cf536f8&lt;/li&gt;
  &lt;li&gt;10/10 - https://github.com/netty/netty/commit/296c0a7912&lt;/li&gt;
  &lt;li&gt;10/09 - https://github.com/netty/netty/commit/cceb99c359&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;– 종텐&lt;/p&gt;
</description>
        <pubDate>Tue, 30 Dec 2014 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2014/12/30/my-contributions-in-2014.html</link>
        <guid isPermaLink="true">http://jong10.com/2014/12/30/my-contributions-in-2014.html</guid>
        
        
      </item>
    
      <item>
        <title>Life is short</title>
        <description>&lt;p&gt;많은 계획을 세운다. 난 올해 ㅇㅇㅇ를 하겠어. ㅁㅁㅁ를 하겠어. 해가 끝나면, “아.. 올해는 너무 바빠서 아무것도 못 했군” 하면서 후회를 하고, 똑같은 계획을 또 세운다. 해마다 되풀이 된다.&lt;/p&gt;

&lt;p&gt;너무 바빠서 아무것도 못 했을 수도 있지만, 어차피 죽기 전까진 영원히 바쁠 것이다. 무언가를 할 수 있을만한 한가한 시간은 살면서 절대로 오지 않는다. 2013년이 시작되고, 지난 40일간 내가 무엇을 했는가? 그 40일을 8번만 하면 2013년이 끝난다. 지난 1년간 자신이 뭘 했나? 그 1년을 50번만 하면 인생이 끝난다.&lt;/p&gt;

&lt;p&gt;하루는, 일주일은, 한달은, 1년은, 인생은, 생각보다 짧다. Life is short.&lt;/p&gt;

&lt;p&gt;– 이상한 나라의 종텐&lt;/p&gt;
</description>
        <pubDate>Thu, 14 Feb 2013 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2013/02/14/life-is-short.html</link>
        <guid isPermaLink="true">http://jong10.com/2013/02/14/life-is-short.html</guid>
        
        
      </item>
    
      <item>
        <title>Ctags, Cscope for Android</title>
        <description>&lt;p&gt;오늘, &lt;a href=&quot;https://plus.google.com/s/%23gdhk&quot;&gt;Google Developer Hackaton Korea&lt;/a&gt;에 참여하면서, 안드로이드 태블릿을 위한 코드뷰어를 만들기 위해서, ctags와 cscope를 Android NDK에서 빌드되게끔 포팅했다. 코드뷰어는 다 못만들어서 틈틈히 만들 예정이고, 포팅한 ctags와 cscope를 github에 올렸다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://github.com/jong10/ctags-android&quot;&gt;Ctags for Android&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://github.com/jong10/cscope-android&quot;&gt;Cscope for Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ctags는 원래 GPLv2 라서, GPLv2로 할 수 밖에 없었고.. Cscope는 원래는 BSD였는데 포팅하면서 필요한 몇몇 파일을 glibc에서 가져왔더니 GPLv2 가 되어버렸다. 아놔. 결국 둘 다 내가 싫어하는 라이센스 GPLv2가 되었다. 안드로이드에서 ctags, cscope 같은 파일을 직접 실행할 일은 거의 없으나, 뭐 올려두면 누군가는 도움이 될까 싶어서 올린다. Cscope같은 경우는 ncurses를 포팅할 수가 없어서, ncurses를 사용하는 부분은 동작하지 않게 했다. 즉, 인덱스 생성 등도 되고, 커맨드라인에서 옵션으로 검색하는 것도 정상적으로 되지만, ncurses가 필요한 GUI틱한 화면은 동작하지 않는다.&lt;/p&gt;

&lt;p&gt;참고로, 루팅한 폰/태블릿에서는 adb shell 연결하고 chmod로 실행권한만 주면, adb shell에서 바로 실행해볼 수 있고, 루팅하지 않은 폰/태블릿에서는 /data/data/자기앱/ 안에 복사하고 권한조정을 해야 한다. 근데, &lt;strike&gt;오늘 해커톤에서 해본바로는 Java의 File.setExecutable 로는 권한이 변경되지 않고, 뭔가 다른 방법을 해보려다가 시간이 다 되서 망했다.&lt;/strike&gt; 나중에 해보니 잘 된다. File.setExecutable 문제가 아니었다.&lt;/p&gt;

&lt;p&gt;– 이상한 나라의 종텐.&lt;/p&gt;

</description>
        <pubDate>Sat, 03 Dec 2011 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2011/12/03/ctags-cscope-for-android.html</link>
        <guid isPermaLink="true">http://jong10.com/2011/12/03/ctags-cscope-for-android.html</guid>
        
        
      </item>
    
      <item>
        <title>Sphinx 사소한 팁 몇가지</title>
        <description>&lt;p&gt;요 몇일간, 모 사이트에 Full-Text 검색을 붙이려고 &lt;a href=&quot;http://sphinxsearch.com/&quot;&gt;Sphinx&lt;/a&gt;를 만지며 놀았다. 처음엔 &lt;a href=&quot;http://lucene.apache.org/&quot;&gt;Lucene&lt;/a&gt;을 고려했으나, 해당 사이트의 서버사이드는 Java 기반이 아닌 PHP였고, 내 서버도 아닌데 단지 검색 때문에 JVM을 띄우는 것은 왠지 죄책감이 느껴졌다. 결정적으로, Sphinx를 붙이는 것은 Lucene을 붙이는 것 보단, 훨씬 손이 덜 갈 것으로 판단했다.&lt;/p&gt;

&lt;p&gt;Sphinx를 처음 써보거나, 도입을 고려하는 사람을 위해서 몇 가지 말을 해보자면,&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Lucene을 적용하는 것 보단 훨씬 간단하다. 특히, PHP, Ruby, Python의 경우 좋을듯.&lt;/li&gt;
  &lt;li&gt;백엔드가 DB인 경우(특히 MySQL)에도 매우 간단하다. 코드 한 줄 필요 없고 최소한의 설정으로 바로 인덱싱 및 검색이 가능하다.&lt;/li&gt;
  &lt;li&gt;백엔드가 DB가 아닌 경우는 &lt;a href=&quot;http://sphinxsearch.com/docs/2.0.1/xmlpipe2.html&quot;&gt;xmlpipe2 driver&lt;/a&gt;만 만들어주면 된다.&lt;/li&gt;
  &lt;li&gt;Lucene처럼 동작을 어느정도 이해할 필요가 전혀 없다.&lt;/li&gt;
  &lt;li&gt;한글 및 &lt;a href=&quot;http://ko.wikipedia.org/wiki/CJK&quot;&gt;CJK&lt;/a&gt; 검색은 기본적으론 되진 않지만, &lt;a href=&quot;http://sphinxsearch.com/wiki/doku.php?id=charset_tables#cjk_ngram_characters&quot;&gt;CJK ngram characters&lt;/a&gt;를 설정하면 된다.&lt;/li&gt;
  &lt;li&gt;CJK 경우는 형태소 분석기가 내장되어 있지 않다.&lt;/li&gt;
  &lt;li&gt;ngram의 길이는 옵션으로 줄 수 있지만, 1 밖에 안 된다. 2 이상이면 assert 에서 죽는다고 한다. -_-;;&lt;/li&gt;
  &lt;li&gt;ngram으로 하면, 한글이 한 글자씩 분리되서 검색이 된다. “종텐”을 검색하는 경우에, “텐종”은 물론, “종어쩌구저쩌구텐”이라던가, “텐어쩌구 저쩌구 종”도 검색된다. -_-;; 문서의 길이가 긴 경우에는, 한글 형태소 분석기를 구현하거나, Lucene에 CJK 형태소 분석기를 달아서 쓰는 편이 나을 수 있다.&lt;/li&gt;
  &lt;li&gt;0.9.9 가 마지막 stable release 이지만, 없는 기능도 좀 있고, 버그도 있으니깐, 최신 버전을 빌드해서 쓰는걸 권장한다.&lt;/li&gt;
  &lt;li&gt;field 내용이 결과에 포함되지 않는 점이 xmlpipe2로 사용하는 경우는 꽤 불편한데, 1.10-beta 이상부턴 이를 지원한다.&lt;/li&gt;
  &lt;li&gt;1.10-beta는 SetLimits 함수에 심각한 버그가 있다. 2.0.1-beta 이상을 빌드해서 사용할 것.&lt;/li&gt;
  &lt;li&gt;document id 를 64비트 정수로 하려면, ./configure –enable-id64 로 빌드해야 한다. 실행했을 때에 id64가 써있으면 64비트로 빌드된 것이고, 그렇지 않다면 64비트 시스템이라 하더라도 32비트로 빌드된 것이다.&lt;/li&gt;
  &lt;li&gt;언어에 상관 없이, &lt;a href=&quot;http://www.ibm.com/developerworks/kr/library/os-php-sphinxsearch/&quot;&gt;PHP로 커스텀 검색 엔진 구현하기 (한글)&lt;/a&gt;를 한번 읽어보면 좋다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;– 이상한 나라의 종텐.&lt;/p&gt;

</description>
        <pubDate>Tue, 28 Jun 2011 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2011/06/28/few-tips-for-sphinx.html</link>
        <guid isPermaLink="true">http://jong10.com/2011/06/28/few-tips-for-sphinx.html</guid>
        
        
      </item>
    
      <item>
        <title>독립했다.</title>
        <description>&lt;p&gt;독립했다. 작은 원룸에 사는 대출러가 되었다. 혼자 밥을 차려 먹는 것은 생각보다 좀 더 쓸쓸했는데, 어차피 대부분 회사에서 먹게 될 것이라는게 불행인지 다행인지 모르겠다. 음악을 틀어놓으면 그나마 좀 덜 적적하다. 건물에 인터넷TV 선도 들어오는데, 구형 TV에 연결이 안되서 24인치 LCD 모니터에 꼽고 (소리 없이) 화면만 봤다. -_-; 구입한 침대는 아직 배달이 되지 않았고, 책상은 안사려고 했는데 생각보다 불편해서 작은걸 하나 사야겠다. 이것저것 생활용품을 샀더니 돈이 엄청 깨졌다. 산다는 것은 참으로 돈이 많이 드는 일이다. 가스비가 얼마나 나올진 모르겠지만, 다행히 난방은 잘 된다. 이사 오기 전의 집은, 안방은 덥고 내 방은 추웠는데. 냉장고가 배가 고픈지 계속 꼬르륵 소리가 나는데, 냉장고 안쪽의 유의사항을 보니깐 냉매가 흐르는 거라면서 정상이라고 써있었다. 그래도 주말엔 자주 서울 집에 갈 생각인데, 아무튼, 독립했다.&lt;/p&gt;

&lt;p&gt;– 이상한 나라의 종텐&lt;/p&gt;
</description>
        <pubDate>Sun, 27 Mar 2011 00:00:00 +0000</pubDate>
        <link>http://jong10.com/2011/03/27/economic-independence.html</link>
        <guid isPermaLink="true">http://jong10.com/2011/03/27/economic-independence.html</guid>
        
        
      </item>
    
  </channel>
</rss>
