<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JHB의 삽질 이야기</title>
    <link>https://roter.tistory.com/</link>
    <description>프로그래밍 삽질 일기</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 16:44:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jhbaek</managingEditor>
    <image>
      <title>JHB의 삽질 이야기</title>
      <url>https://tistory1.daumcdn.net/tistory/273712/attach/eb98984682ef4af6a51be8948bf78e4c</url>
      <link>https://roter.tistory.com</link>
    </image>
    <item>
      <title>캐논 G3900 프린터 잉크 안나올 때 석션하기</title>
      <link>https://roter.tistory.com/435</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CDHddqLVAlI&quot;&gt;https://www.youtube.com/watch?v=CDHddqLVAlI&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=CDHddqLVAlI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/tTrho/hySAc1Gc0B/feEp2ViyHbYLs2iKpXXQV1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[ENG]캐논 G2910등 무한 제품 석션할 필요 없어요 / 잉크 시스템 세척으로 호스 채우세요 How to remove &quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/CDHddqLVAlI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&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;</description>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/435</guid>
      <comments>https://roter.tistory.com/435#entry435comment</comments>
      <pubDate>Fri, 12 May 2023 16:27:14 +0900</pubDate>
    </item>
    <item>
      <title>Serverless로 E-Commerce 만들기 / 블랙프라이데이 트래픽 썰 / 스타트업에서 CTO는 뭘 하는 자리인가?</title>
      <link>https://roter.tistory.com/434</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647007701528&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;Serverless로 E-Commerce 만들기 / 블랙프라이데이 트래픽 썰 / 스타트업에서 CTO는 뭘 하는 자리인가?&quot; data-og-description=&quot;제가 블로그를 쓴지도 정말 오래 된 것 같습니다. 일하느라 바빴어요.&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&quot; data-og-url=&quot;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XnrLG/hyNFHecpEu/HYKmUFMNA8mCydDL6GeDZk/img.png?width=768&amp;amp;height=575&amp;amp;face=442_306_629_510,https://scrap.kakaocdn.net/dn/OXDZd/hyNFxJqEUw/DTL6K1oq6pSNQ0kkXf3oI0/img.png?width=768&amp;amp;height=575&amp;amp;face=442_306_629_510,https://scrap.kakaocdn.net/dn/bxJuKi/hyNGCh2UIZ/TGpM0PxnaS4kkg4K8ayDxK/img.png?width=1400&amp;amp;height=820&amp;amp;face=0_0_1400_820&quot;&gt;&lt;a href=&quot;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/@kurtlee/serverless%EB%A1%9C-e-commerce-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B8%94%EB%9E%99%ED%94%84%EB%9D%BC%EC%9D%B4%EB%8D%B0%EC%9D%B4-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%8D%B0-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85%EC%97%90%EC%84%9C-cto%EB%8A%94-%EB%AD%98-%ED%95%98%EB%8A%94-%EC%9E%90%EB%A6%AC%EC%9D%B8%EA%B0%80-a6f9d9beb930&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XnrLG/hyNFHecpEu/HYKmUFMNA8mCydDL6GeDZk/img.png?width=768&amp;amp;height=575&amp;amp;face=442_306_629_510,https://scrap.kakaocdn.net/dn/OXDZd/hyNFxJqEUw/DTL6K1oq6pSNQ0kkXf3oI0/img.png?width=768&amp;amp;height=575&amp;amp;face=442_306_629_510,https://scrap.kakaocdn.net/dn/bxJuKi/hyNGCh2UIZ/TGpM0PxnaS4kkg4K8ayDxK/img.png?width=1400&amp;amp;height=820&amp;amp;face=0_0_1400_820');&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;Serverless로 E-Commerce 만들기 / 블랙프라이데이 트래픽 썰 / 스타트업에서 CTO는 뭘 하는 자리인가?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;제가 블로그를 쓴지도 정말 오래 된 것 같습니다. 일하느라 바빴어요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;Beanstalk + ES6 JS를 4개월 만에 TS + Serverless로 전환한건 정말 놀랍다. Serverless Framework을 쓴건가? 어떻게 운영하고 있는지도 궁금하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTO 부분은 굉장히 와닿았는데&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span&gt;그리고 다양한 회사의 CTO들을 만나봤지만, 회사마다 하는 일이 너무 달랐습니다.&lt;br /&gt;어떤 곳은 그 팀에서 개발을 가장 잘 하는 사람&lt;br /&gt;&amp;mdash; 즉 Technical Leader 역할을 중요하게 생각했고,&lt;br /&gt;어떤 곳은 개발과 Business 요구를 bridging 하고 채용에 집중하는 사람&lt;br /&gt;&amp;mdash; 즉 Technical Manager / Product Owner 역할을 더 중요하게 생각하고요.&lt;br /&gt;하다못해 제가 존경하는 회사의 CEO 들로 부터도 이 질문에 대해서 모두 다른 답변을 받았습니다. (대부분 직접 물어본게 아니라 인터뷰를 본거지만)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;제가 2년 반의 경험과, 직관에서 배운 답은 이렇습니다:&lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;c7c4&quot; data-selectable-paragraph=&quot;&quot;&gt;스타트업에서 &amp;ldquo;&lt;b&gt;고정적인 역할&lt;/b&gt;&quot;은 존재하지 않는다.&lt;br /&gt;회사와 비즈니스가 성장함에 따라 필요한 역할이 계속해서 새로 생기고,&lt;br /&gt;구성원들 모두가 성장하면서 필요한 역할을 채워나가야 한다.&lt;br /&gt;성장하지 못하는 구성원이 많은 스타트업은 반드시 실패한다.&lt;/li&gt;
&lt;li id=&quot;bd19&quot; data-selectable-paragraph=&quot;&quot;&gt;일반론으로, 스타트업에서 CTO는 크게 아래 4가지를 충족해야한다.&lt;br /&gt;(1) 개발팀에서 가장 기술선택과 결정을 잘 하는 사람&lt;br /&gt;(2) 개발팀에서 회사 전체의 목표와 비즈니스 요구사항을 가장 잘 알고, 이걸 기술적으로 Trade-off 를 할수 있는 사람&lt;br /&gt;(3) 개발팀에게 해야하는 Task의 당위성을 설득할수 있는 사람&lt;br /&gt;(4) 개발팀원들이 배울게 있다고 생각하는 사람&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 주로 Technical Manager / Product Owner 역할을 했고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2에서는 (2)(3)(1)(4) 순으로 역할을 한 것 같다. 그래서 나는 항상 든든한 Technical Lead와 함께 하는게 너무나 중요하다.&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;</description>
      <category>JHB/IT 이야기</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/434</guid>
      <comments>https://roter.tistory.com/434#entry434comment</comments>
      <pubDate>Fri, 11 Mar 2022 23:11:21 +0900</pubDate>
    </item>
    <item>
      <title>DDB Singletable 디자인</title>
      <link>https://roter.tistory.com/432</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1633524276102&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;slideshare:presentation&quot; data-og-title=&quot;서버리스 기반 데이터베이스 모델링 및 운영 노하우 알아보기 - 변규현 SW 엔지니어, 당근마켓 / &quot; data-og-description=&quot;서버리스 기반 서비스를 위한 다양한 데이터베이스 선택 옵션이 있습니다.&amp;nbsp;본 세션에서는 RDB 및 NoSQL&amp;nbsp;측면에서 서버리스 DB 활용 전략을 살펴봅니다. RDB에서 서버리스를 위한 데이터 모델링 및 &quot; data-og-host=&quot;www.slideshare.net&quot; data-og-source-url=&quot;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&quot; data-og-url=&quot;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/blPyPq/hyLSyPsIDE/znwkN0jZe1C1qqsSVPfvEK/img.jpg?width=768&amp;amp;height=432&amp;amp;face=0_0_768_432&quot;&gt;&lt;a href=&quot;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.slideshare.net/awskorea/learn-how-to-model-and-operate-a-serverlessbased-database&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/blPyPq/hyLSyPsIDE/znwkN0jZe1C1qqsSVPfvEK/img.jpg?width=768&amp;amp;height=432&amp;amp;face=0_0_768_432');&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;서버리스 기반 데이터베이스 모델링 및 운영 노하우 알아보기 - 변규현 SW 엔지니어, 당근마켓 /&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서버리스 기반 서비스를 위한 다양한 데이터베이스 선택 옵션이 있습니다.&amp;nbsp;본 세션에서는 RDB 및 NoSQL&amp;nbsp;측면에서 서버리스 DB 활용 전략을 살펴봅니다. RDB에서 서버리스를 위한 데이터 모델링 및&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.slideshare.net&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 ppt 맘에 든다.&lt;/p&gt;</description>
      <category>Cloud/AWS</category>
      <category>AWS</category>
      <category>Cloud</category>
      <category>database</category>
      <category>ddb</category>
      <category>NoSQL</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/432</guid>
      <comments>https://roter.tistory.com/432#entry432comment</comments>
      <pubDate>Wed, 6 Oct 2021 21:44:51 +0900</pubDate>
    </item>
    <item>
      <title>AWS CLI v2 에서 명령어 출력이 새 창으로 나오지 않도록 하기</title>
      <link>https://roter.tistory.com/431</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;shell script를 짜면서 aws cli 명령을 사용 할 때가 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws cli v2의 경우 명령 실행 결과에 대한 출력이 새 창 (Page)로 나오는 덕에 가끔씩 프롬프트 출력 결과들이 꼬일 때가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 해결 하는 방법은, 명령어 입력시 뒤에 --no-cli-pager 를 붙이는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws iam list-users 명령의 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws iam list-users --no-cli-pager 로 할 경우 새 창이 뜨지 않고 명령어 결과가 동일한 터미널에 출력된다.&lt;/p&gt;</description>
      <category>Cloud/AWS</category>
      <category>AWS</category>
      <category>AWSCLI</category>
      <category>Cloud</category>
      <category>sysops</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/431</guid>
      <comments>https://roter.tistory.com/431#entry431comment</comments>
      <pubDate>Wed, 29 Sep 2021 17:18:35 +0900</pubDate>
    </item>
    <item>
      <title>npm install 시 permission denied 나는 문제</title>
      <link>https://roter.tistory.com/430</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 M1 실리콘 (ARM) 사용 중이고, 여기에 ubuntu docker를 돌려서 remote container로 node를 개발 중에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 얼마전 까지 잘 되던게, 특히 npm install -g 하면 계속 해서 permission denied 에러가 난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EACCESS: permission denied&lt;br /&gt;npm&amp;nbsp;ERR!&amp;nbsp;spawn&amp;nbsp;ENOENT&lt;br /&gt;npm&amp;nbsp;ERR!&amp;nbsp;code&amp;nbsp;ELIFECYCLE&lt;br /&gt;sh:&amp;nbsp;1:&amp;nbsp;node:&amp;nbsp;Permission&amp;nbsp;denied&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등등 package-lock.json과 node_modules 디렉토리를 지우고 아무리 다시 시도해도 계속해서 이런류의 에러가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 나는 docker로 돌리고 있고 user는 당연히 sudo (root) 인데 왜 자꾸 permission denied 에러가 나는걸까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 해결 방법은 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm install --unsafe-perm 을 통해서 설치하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm config set unsafe-perm true&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 입력한 후 설치해도 된다. 아래의 명령어를 입력하면 .npmrc 파일에 unsafe-perm=true 가 입력 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;unsafe-perm은 패키지 스크립트 실행 시 UID / GID 전환을 제한하는 플래그라고 한다. unsafe-perm을 true로 하면 permission denied 에러 나는 패키지 설치시 자동으로 sudo를 통해 설치를 진행한다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재밌는건... 난 이미 root 인데 ㅡ.ㅡ;;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 npm이 꼬였거나.. m1 실리콘 칩으로 인한 호환성 문제 때문에 발생하는게 아닌가 싶다.&lt;/p&gt;</description>
      <category>Development/Web개발</category>
      <category>node</category>
      <category>npm</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/430</guid>
      <comments>https://roter.tistory.com/430#entry430comment</comments>
      <pubDate>Thu, 5 Aug 2021 13:56:18 +0900</pubDate>
    </item>
    <item>
      <title>빅데이터와 머신러닝 그리고 클라우드</title>
      <link>https://roter.tistory.com/429</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;한 5년전까지만 해도 빅데이터와 머신러닝(AI)는 크게 비지니스에 영향을 끼치지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅데이터 플랫폼을 구성하기 위한 기술적 난이도(직접 온프렘에 하둡 클러스터 구성)가 너무 어려웠고 인프라 비용도 어마어마했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 비지니스적으로 ROI가 나오지 않았었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝 역시 마찬가지였다. 정확도가 90%가 넘는다 하더라도 99%가 되지 않으면 산업에서 사용 할 수 없지 않을까? 하고 생각했었으며&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;의도한건지 의도하지 않은건지, 4차 산업 혁명에서 부르는 기술들의 인프라에 대한 문제는 클라우드가 뜨면서 해결되게 되었고 빅데이터와 머신 러닝 모두 이제 학계가 아니라 업계에서 날라다니는 기술이 되었다.&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;자연스럽게 '수집한 빅데이터'는 ETL을 통해 '머신 러닝'에 활용하게 되었고 드디어 산업계에서 '데이터'를 제대로 활용 할 수 있게 되었다.&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;수집된 데이터는 가장 쉽게는 비지니스 인사이트(BI)를 위하여 대쉬보드 구성에 활용될 수 있으며 키바나, 타블루, 파워BI 등 수 많은 BI 툴이 존재 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외에도 공정 지능화, 프로세스 최적화, 서비스 효율 향상, 리스크 관리/신뢰성 증대, 품질 예측 / 조기 감지(예지 정비) 등 수 많은 분야에서 빅데이터와 머신러닝을 활용 할 수 있으며 이 둘은 이제 뗄레야 뗄 수 없는 관계로 붙어 다니는 동시에 그 기반이 되는 '클라우드'는 더욱 더 발전 속도가 빨라지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더불어 IoT/스마트 공장, SCM, 로그 등 수 없이 많은 데이터도 이젠 버려지는 것이 아니라 트레이닝 데이터로 사용 될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흔히 제조업에서는&lt;br /&gt;내부 : 로그, 생산, 센서, 매출, 고객, AS, 상담, 이메일, 품질, 부품 등&lt;br /&gt;외부 : SNS, 리뷰, 날씨, 지역, 언론 보도, 인구 통계 등&lt;br /&gt;같은 데이터를 데이터레이크에 몰아넣는 것 만으로 대쉬보드를 구성하여 비지니스 인사이트를 도출하고 이를 분석하여 여러 방면에 활용 할 수도 있게 된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥킨지에서는 다음 10년간, 지난 100년간 발전 한 것 보다 더 눈부신 발전이 있을 것이라 말했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 이 기술들이 어떻게 발전하게 될지 흥미진진하다.&lt;/p&gt;</description>
      <category>JHB/IT 이야기</category>
      <category>ABCD</category>
      <category>Ai</category>
      <category>BigData</category>
      <category>ML</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/429</guid>
      <comments>https://roter.tistory.com/429#entry429comment</comments>
      <pubDate>Mon, 5 Jul 2021 09:22:37 +0900</pubDate>
    </item>
    <item>
      <title>Mac M1에서 캐논 프린터 드라이버 설치</title>
      <link>https://roter.tistory.com/428</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;나는 G3900을 사용 중인데,&amp;nbsp;한국 캐논 사이트에서 제공하는 드라이버는 설치가 계속 실패 하더라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐나다 캐논 사이트에서 G3000 Series 용 드라이버를 받아서 깔았더니 성공했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1624890373159&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;G3000 series CUPS Printer Driver Ver.16.40.1.0 (Mac)&quot; data-og-description=&quot;History [Ver.16.40.1.0] - macOS Big Sur (11.0) has been added as a supported OS. - Modified the failure occurred by combining with Canon application. [Ver.16.40.0.0] - macOS Catalina (10.15) has been added as a supported OS. [Ver.16.20.0.0] - macOS Mojave &quot; data-og-host=&quot;canoncanada.custhelp.com&quot; data-og-source-url=&quot;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&quot; data-og-url=&quot;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://canoncanada.custhelp.com/app/answers/answer_view/a_id/1011682/~/g3000-series-cups-printer-driver-ver.16.40.1.0-%28mac%29&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;G3000 series CUPS Printer Driver Ver.16.40.1.0 (Mac)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;History [Ver.16.40.1.0] - macOS Big Sur (11.0) has been added as a supported OS. - Modified the failure occurred by combining with Canon application. [Ver.16.40.0.0] - macOS Catalina (10.15) has been added as a supported OS. [Ver.16.20.0.0] - macOS Mojave&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;canoncanada.custhelp.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신기한건 나는 네트워크 프린터로 사용중인데, 설치 과정 중에 IP 잡는 과정 같은게 없었는데도 불구하고 인쇄가 잘된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 한국 프린터드라이버 설치 과정 중에 IP는 잡은 것 같고, 프린터 드라이버만 추가로 설치된 느낌이다.&lt;/p&gt;</description>
      <category>Development/Tip</category>
      <category>MAC</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/428</guid>
      <comments>https://roter.tistory.com/428#entry428comment</comments>
      <pubDate>Mon, 28 Jun 2021 23:27:17 +0900</pubDate>
    </item>
    <item>
      <title>AWS CDK에서 ecs-patterns 사용시, 상세 설정을 하려면?</title>
      <link>https://roter.tistory.com/427</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ecs-patterns의 ApplicationLoadBalancedFargateService를 사용하여 Service를 만들었는때, Auto Scale을 설정 하려면 어떻게 해야 할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.ApplicationLoadBalancedFargateService.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.ApplicationLoadBalancedFargateService.html&lt;/a&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;정답은..&lt;/p&gt;
&lt;pre id=&quot;code_1623985391129&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const fargateService = new ecs_patterns.ApplicationLoadBalancedFargateService(this, 'FargateService', {
//...
}

fargateService.service.autoScaleTaskCount({
      maxCapacity: 4
    }).scaleOnCpuUtilization('CpuScaling', {
      targetUtilizationPercent: 10
    });&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;마찬가지로 Target Group에 StickySession을 처리하고 싶다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fargateService.targetGroup.&lt;span style=&quot;color: #212f3e;&quot;&gt;enableCookieStickiness 이런걸 써주면 되겠다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Cloud/AWS</category>
      <category>AWS</category>
      <category>AWSCDK</category>
      <category>cdk</category>
      <category>Cloud</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/427</guid>
      <comments>https://roter.tistory.com/427#entry427comment</comments>
      <pubDate>Fri, 18 Jun 2021 12:04:40 +0900</pubDate>
    </item>
    <item>
      <title>MSA의 Demo Day</title>
      <link>https://roter.tistory.com/426</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;MSA 다룰 때 카오스엔지니어링은 중요하다. 하나의 서비스 장애가 전체 시스템 장애로 퍼지는 일이 흔하기 때문이다.&lt;br /&gt;MSA로 아키텍처를 구성하면, 어느 한 서비스가 장애 시간이 점점 쌓여서 Timeout이 계속 나는 상황이 되면..&amp;nbsp;이거에 연관된 모든 서비스가 점점 느려지다가 전체 서비스가 한순간에 확 다운된다.&amp;nbsp;2차 함수 처럼 그래프가 한번에 확 올라간다.&lt;br /&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;이때 서비스를 모두 띄워놓고 하나씩 죽여보는 날을 잡는데, 이걸 Demo Day 라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 서비스에서 DB 요청 했는데 Timeout이 난다고 하면, Backoff &amp;amp; Jittering 하고 재시도 하는 방법을 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 서비스가 작을때는 문제가 안되는데 대규모 서비스에서는 이렇게 하면 시스템 전체가 큰일 날 수 있다. 차라리 P99, P50 같은 정책을 두고 일부 사용자를 빠르게 Unavailable로 두는 것이 좋다. Timeout이 계속 나는 상황에서 서비스가 트래픽을 받으려고 하면 오히려 문제가 생긴다. 이럴 때는 차라리 에러 메세지를 캐쉬(네거티브 캐쉬)에 넣어놓고, 캐쉬가 사라지기 전에는 서비스에 접근 못하도록 하는게 더 좋을 수 있다. 엔보이 프록시를 쓰는 경우 엔보이 프록시에 서킷 브레이크를 넣어서 처리 해도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간 팁 : Lambda의 경우 X-Ray같은걸로 레이턴시 계산&lt;br /&gt;P50 : 50%가 1초 미만에 처리된다. 보통 외부에 공개할때는 이렇게 함&lt;br /&gt;P99 : 99%가 1초 미만에 처리된다. 내부 지표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 일부 서비스에서 Timeout이 났다고 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;절대 죽으면 안되는 서비스의 경우 Timeout 난 순간 캐쉬를 한다. 바로 Unavailable로 만든다는 의미이며 바로 장애 상태로 전환 시킨다는 의미다. 장애인지도 모르게 두면 안된다. 이렇게 해서 서비스로 Request가 가지 않도록 한다.&lt;br /&gt;&lt;br /&gt;어느정도의 장애를 허용해도 되는 서비스의 경우 Timeout이 두번 난다던지 하면 Unavailable 로 만들면 되겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 게임 같은 경우는 사용자가 아이템을 깠는데 5초 정도 안까진다고 해서 게임을 끄지 않는다. 웹 사용자는 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;추가로 오늘 순차처리. 코리오그래피. 스텝펑션 등에 대해서도 공부했는데 까먹기 전에 그냥 이 글 말미에 적어놔야겠다.&lt;/p&gt;</description>
      <category>Cloud/AWS</category>
      <category>architecture</category>
      <category>Cloud</category>
      <category>MicroServiceArchitecture</category>
      <category>MSA</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/426</guid>
      <comments>https://roter.tistory.com/426#entry426comment</comments>
      <pubDate>Fri, 18 Jun 2021 12:02:35 +0900</pubDate>
    </item>
    <item>
      <title>Public IP가 할당되지 않은 Instance는 Internet Gateway로 요청을 보낼 수 없다.</title>
      <link>https://roter.tistory.com/425</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Public Subnet에 EC2를 생성했고, Public IP는 할당하지 않았다. (Private IP만 있는 상황)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 상황에서 AWS SDK를 통해 AWS Batch를 수행했는데... Timeout이 나면서 수행이 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도대체 무슨 일일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 IAM Role 문제 인줄 알았는데,, 아니었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Public IP가 없으면 Internet 을 통해 외부로 요청이 불가한 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차라리 Private Subnet 통해서 NAT - Internet Gateway로 갔으면 NAT의 Public IP를 달고 외부와 통신이 됐을 텐데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP 대역이 서로 다른 네트워크가 통신하려면 2개 중 하나를 만족해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 서로 상대방의 IP 대역을 알고 있거나 - 가는 길을 알려줘야 하기 때문에 라우터를 쓴다. (같은 네트워크 안에서 길을 알려주는 기능은 스위치라고 한다.)&lt;br /&gt;2. 어느 한쪽이 반대편의 대역으로 변환해서 통신을 시도하거나 - 상대방 IP로 변환하는 기능을 하는 것이 NAT 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 영역에서는 모두가 알고 있는 IP로 통신해야 하기 때문에 이 때 필요한게 Public IP 이다.&lt;/p&gt;</description>
      <category>Cloud/AWS</category>
      <category>AWS</category>
      <category>Cloud</category>
      <category>Network</category>
      <category>vpc</category>
      <author>jhbaek</author>
      <guid isPermaLink="true">https://roter.tistory.com/425</guid>
      <comments>https://roter.tistory.com/425#entry425comment</comments>
      <pubDate>Thu, 17 Jun 2021 18:40:25 +0900</pubDate>
    </item>
  </channel>
</rss>