<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Projects on man.hwangsehyun.com</title>
    <link>https://man.hwangsehyun.com/kp/project/</link>
    <description>Recent content in Projects on man.hwangsehyun.com</description>
    <image>
      <title>man.hwangsehyun.com</title>
      <url>https://man.hwangsehyun.com/images/papermod-cover.png</url>
      <link>https://man.hwangsehyun.com/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.145.0</generator>
    <language>kp</language>
    <lastBuildDate>Fri, 08 Nov 2024 00:00:00 +0900</lastBuildDate>
    <atom:link href="https://man.hwangsehyun.com/kp/project/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>LLM을 이용한 영양 상담 서비스</title>
      <link>https://man.hwangsehyun.com/kp/project/llm-nutrition-coach/</link>
      <pubDate>Fri, 08 Nov 2024 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/llm-nutrition-coach/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;크라우드웍스에서 &lt;a
  href=&#34;https://man.hwangsehyun.com/project/llm-docs-search/&#34;
  &gt;초기 6개월 동안 프로젝트&lt;/a
&gt;
를 수행하면서 개발자와 비개발자들이 프롬프트 엔지니어링과 서비스 개발에 걸쳐 가지고 있던 요구 사항을 종합하고 AWS 생태계 내에서 지속 가능한 해결책을 도출하려고 노력했습니다.&lt;/li&gt;
&lt;li&gt;3단계로 나누어진 프로젝트에서 첫 번째 단계로 Queue consumer service와 프롬프트 운영 프로세스를 Python으로 개발했습니다.&lt;/li&gt;
&lt;li&gt;3단계 전체에서 CloudFormation을 기반으로 하는 &lt;a
  href=&#34;https://docs.aws.amazon.com/cdk/v2/guide/home.html&#34;
  &gt;AWS CDK&lt;/a
&gt;
와 &lt;a
  href=&#34;https://aws.github.io/copilot-cli/&#34;
  &gt;Copilot CLI&lt;/a
&gt;
를 조합한 ECS 서비스 2개를 중심으로 다양한 AWS 리소스를 생성했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;iframe-wrapper&#34;&gt;
&lt;p&gt;
  

  
    
    
      &lt;img
        src=&#34;https://man.hwangsehyun.com/diagram-export-21-01-2025-03_13_38_6717719122690619770.png&#34;
        
          width=&#34;2127&#34; height=&#34;1634&#34;
        
        alt=&#34;enter image description here&#34;
      /&gt;
    
  








&lt;/p&gt;
&lt;iframe src=&#34;https://app.eraser.io/workspace/TAAK8BBBhSbQTFLwV0tj?origin=share&#34; allowtransparency=&#34;true&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;h3 id=&#34;cloudformation-stacks&#34;&gt;CloudFormation Stacks&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Copilot CLI + AWS CDK&lt;/p&gt;</description>
    </item>
    <item>
      <title>LLM을 이용한 기업용 챗봇 서비스</title>
      <link>https://man.hwangsehyun.com/kp/project/llm-docs-search/</link>
      <pubDate>Tue, 30 Apr 2024 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/llm-docs-search/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h3 id=&#34;&#34;&gt;💬 사내 문서에 대한 Q&amp;amp;A 챗봇 개발&lt;/h3&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;네이버 클라우드에서 고객사의 문서 데이터를 취급하기 위한 인프라 및 보안 설계&lt;/li&gt;
&lt;li&gt;챗봇 형태의 PoC 서비스 아키텍처 설계&lt;/li&gt;
&lt;li&gt;무정형의 HWP를 HTML 형태로 변환해 LLM에 적합한 형태로 정형화하고 검수하는 Frontend 개발&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;architecture&#34;&gt;Architecture&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;sequenceDiagram
    autonumber

    actor frontend as 💻 Frontend
    participant auth as Auth λ
    participant backend as 🗄️ Backend
    
    frontend -&amp;gt;&amp;gt; auth: 📩 ID, PW
    auth -&amp;gt;&amp;gt; frontend: 🔐 Token

    frontend -&amp;gt;&amp;gt; backend: 🔐 Token 
    backend -&amp;gt;&amp;gt; auth: 🔐 Token
    auth -&amp;gt;&amp;gt; backend: ✅❌ Pass/Fail
    backend -&amp;gt;&amp;gt; frontend: 💯 Response
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;인프라
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://min.io/&#34;
  &gt;Minio&lt;/a
&gt;
라는 S3-compatable object storage에 원본 문서와 Chunking document를 적재&lt;/li&gt;
&lt;li&gt;네이버 클라우드 VM 초기 구성, 목적 별로 할당 및 관리&lt;/li&gt;
&lt;li&gt;VPN을 통해서만 VPC 내부에 접근할 수 있도록 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;챗봇 형태의 PoC 서비스 구성
&lt;ul&gt;
&lt;li&gt;React frontend가 Fast API chat server, Self-hosted &lt;a
  href=&#34;https://sentry.io/welcome/&#34;
  &gt;Sentry&lt;/a
&gt;
 등에 접근할 수 있는 Nginx 개발&lt;/li&gt;
&lt;li&gt;업데이트가 잦은 Fast API 서버에 의존하지 않도록 JWT 서비스를 &lt;a
  href=&#34;https://www.ncloud.com/product/compute/cloudFunctions&#34;
  &gt;Naver Cloud Function&lt;/a
&gt;
를 이용해 별도로 분리&lt;/li&gt;
&lt;li&gt;채팅 API 사용 시나리오 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;html-정형화-frontend-개발&#34;&gt;HTML 정형화 Frontend 개발&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;기술 스택
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://lit.dev/&#34;
  &gt;Lit&lt;/a
&gt;
: 대량의 검수 대상 HTML element에 Virtual DOM 없이 직접 접근하고 Boiler plating 없이 빠르게 개발하기 위해서 선택&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://prestd.com/&#34;
  &gt;pREST&lt;/a
&gt;
: 백엔드의 지원 없이 HTML 데이터를 DB에 적재하기 위해 선택&lt;/li&gt;
&lt;li&gt;DB
&lt;ul&gt;
&lt;li&gt;문서 파싱 규칙은 Indexed DB에 적재해 개인이 관리&lt;/li&gt;
&lt;li&gt;문서 파싱 결과는 Postgres에 적재해 RAG 시스템과 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;html 트리를 탐색하며 html element마다 세상에  id를 부여하는 해싱 알고리즘 개발&lt;/li&gt;
&lt;li&gt;문서 파싱 규칙을 UI를 통해 작성하고 규칙의 적용 결과를 바로 확인할 수 있음
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent&#34;
  &gt;&lt;code&gt;textContent&lt;/code&gt;&lt;/a
&gt;
에 대한 Regex matching, CSS selector, DOM tree 내의 위치 등을 고려&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Minio와 연동된 Batch 기능 개발&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lessons&#34;&gt;Lessons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;새로운 회사에서 일을 시작하며 직접 고객사와 소통하지 않고 PM과 협업했습니다.&lt;/li&gt;
&lt;li&gt;Lit framework를 이용해서 복잡한 상태 관리를 해보았다.&lt;/li&gt;
&lt;li&gt;AWS 이외의 클라우드로 네이버 클라우드를 처음으로 경험해보았으나, 불안정하고 완성도가 떨어지는 모습에 더는 경험해보고 싶지 않았습니다.&lt;/li&gt;
&lt;li&gt;언어 모델과 RAG 시스템의 특성을 서서히 이해해가고 있습니다. 성능에 대한 사람들의 높은 기대치에는 절대 대중들이 예상하는 만큼 쉽게 도달할 수 없어 보이고, 언어 모델 이외의 전문 지식과 소프트웨어 기술에 대한 중요성을 매일 느끼며 겸손을 배우고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTgxNjMyNDI5OCwtMTk4NDA4NDgxNCwxMT
U5NTU3MDE2LDE2NzgzMTY4MDEsNTk2MjAzMjkwLDg5NTAwMzY2
NiwxMDEwNDQwMjUxLC0xOTcyNzg5MTYwLC0xMDMyMDk2NzEyLD
E4NzM5MDgzMCw1NTc4Mjk2MDUsMjA0OTIzOTkyNiwxMzI2OTgw
MzQwLC0xNDgyMDk1NTI4XX0=
--&gt;</description>
    </item>
    <item>
      <title>LLM 기반 작명 서비스</title>
      <link>https://man.hwangsehyun.com/kp/project/naimy/</link>
      <pubDate>Thu, 29 Feb 2024 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/naimy/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;서비스 링크: &lt;a
  href=&#34;https://naimy.ai/&#34;
  &gt;https://naimy.ai/&lt;/a
&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;한글 브랜드 이름에 특화된 브랜드 이름 작명 서비스 &lt;a
  href=&#34;https://naimy.ai/&#34;
  &gt;naimy.ai&lt;/a
&gt;
. 작명에 이어 작명된 이름을 도메인 API, 특허청 API, 소셜 네트워킹 서비스 크롤링 등의 외부 서비스 연동을 통해서 적절성을 분석할 수 있습니다.&lt;/li&gt;
&lt;li&gt;크게 Postgres RDS를 사용하는 Lambda backend와 React frontend로 이루어진 애플리케이션으로, 외부 서비스 연동을 고려한 AWS 아키텍처를 설계하고 특허청을 제외한 외부 서비스 연동 개발을 진행했습니다.&lt;/li&gt;
&lt;li&gt;작명 옵션 선택지 변경, Database connection pool 디버깅, AWS 계정 마이그레이션 등 사이트 운영 이슈 대응&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;
  

  
    
    
      &lt;img
        src=&#34;https://man.hwangsehyun.com/Untitled-_9481550536864483097.png&#34;
        
          width=&#34;2000&#34; height=&#34;1283&#34;
        
        alt=&#34;enter image description here&#34;
      /&gt;
    
  








&lt;/p&gt;</description>
    </item>
    <item>
      <title>보행자 &amp; 번호판 인식 솔루션</title>
      <link>https://man.hwangsehyun.com/kp/project/vision-and-alpr/</link>
      <pubDate>Thu, 29 Feb 2024 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/vision-and-alpr/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://man.hwangsehyun.com/career/#nextlab&#34;
  &gt;넥스트랩&lt;/a
&gt;
의 소속 팀에서 가장 장기적으로 진행한 중요 프로젝트로, CCTV 등의 카메라에서 획득한 보행자와 번호판 이미지를 대상으로 추적 and/or 번호판 인식 모듈을 서비스화하는 프로젝트&lt;/li&gt;
&lt;li&gt;납품 사례마다 다양한 요구 사항이 있었는데, 주로 핵심 AI 모듈을 둘러싼 서비스 구조를 비즈니스 로직에 맞춰 설계하고 구현하는 업무를 맡았습니다. 크게 요청에 따라서 task를 수행하는 &lt;span id=&#34;pull-mode&#34;&gt;&lt;em&gt;pull&lt;/em&gt; mode&lt;/span&gt;와 최대한 빠른 속도로 task를 수행하는 &lt;span id=&#34;push-mode&#34;&gt;&lt;em&gt;push&lt;/em&gt; mode&lt;/span&gt;으로 나눌 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://man.hwangsehyun.com/posts/ssh-tunnel-launchpad/&#34;
  &gt;&lt;em&gt;다련장 발사대&lt;/em&gt;&lt;/a
&gt;
라는 별명의 SSH tunnel을 통한 배포 및 운영 툴을 만들어서 이 프로젝트에서 2년간 안정적으로 사용했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;컨테이너 단위로 역할을 지정하고 Stage와 GPU 환경을 고려한 docker-compose 개발
&lt;ul&gt;
&lt;li&gt;배포와 관련해서 Nvidia GPU를 컨테이너 내부에서 사용하기 위한 고려 사항들을 알고 있고 실무에 활용해왔습니다. (CUDA version, Container runtime, Container base image, Runtime flags&amp;hellip;)&lt;/li&gt;
&lt;li&gt;컨테이너 별 주요 Failure point를 고려해 Health check 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AI task 관리 기능 개발
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://man.hwangsehyun.com/kp/project/vision-and-alpr/#pull-mode&#34;
  &gt;&lt;em&gt;pull&lt;/em&gt; mode&lt;/a
&gt;
에서는 tmpfs 또는 S3-compatable 임시 저장소에 최근 사진만을 적재&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://man.hwangsehyun.com/kp/project/vision-and-alpr/#push-mode&#34;
  &gt;&lt;em&gt;push&lt;/em&gt; mode&lt;/a
&gt;
에서는 대기열에 요청받은 Task들을 적재&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;시스템 일부분에 대한 테스트 또는 운영 지원을 위한 내부용 프론트엔드 구현&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://aws.amazon.com/cdk/&#34;
  &gt;AWS CDK&lt;/a
&gt;
를 이용해 브랜치 별로 docker compose build를 수행하는 Serverless CI 개발&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;progress&#34;&gt;Progress&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;납품 케이스 별로 개발 사항들을 정리했습니다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>X-Ray 식품 검사 시스템</title>
      <link>https://man.hwangsehyun.com/kp/project/x-ray/</link>
      <pubDate>Sun, 31 Dec 2023 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/x-ray/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;하드웨어 연동과 AI 이물 검사 기능을 핵심으로 하는 &lt;strong&gt;식품 X-Ray 이물 검사 시스템 전면 재개발&lt;/strong&gt; 프로젝트. &lt;a
  href=&#34;https://www.ni.com/ko/shop/labview.html&#34;
  &gt;LabView&lt;/a
&gt;
 윈도우 응용 프로그램을 MSA로 변경.&lt;/li&gt;
&lt;li&gt;크게 장비를 직접 통제하는 하드웨어 스택과 검사 수행에 필요한 비즈니스 로직과 검사 이력을 관리하는 애플리케이션 스택으로 나누어 서비스를 설계했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  

  
    
    
      &lt;img
        src=&#34;https://man.hwangsehyun.com/XRay_comm_process%EC%9D%98%20%EC%82%AC%EB%B3%B8-Running%20%282%29_5485753560808419753.svg&#34;
        
        alt=&#34;x-ray diagram&#34;
      /&gt;
    
  








&lt;/p&gt;
&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;하드웨어 스택에서는 Redis message broker를 중심으로 하드웨어 연동 전용 컨테이너들을 배치하고 해당 컨테이너들에 대해 TDD를 도입해 하드웨어에 의한 Pain point를 줄였습니다.
&lt;ul&gt;
&lt;li&gt;X-Ray의 눈 &lt;code&gt;detector&lt;/code&gt; 컨테이너를 C++로 개발했습니다. bmp 표준을 준수하되 깊은 비트 심도를 나타낼 수 있는 형식을 고안하고, 다른 컨테이너가 &lt;a
  href=&#34;https://man7.org/linux/man-pages/man2/mmap.2.html&#34;
  &gt;mmap&lt;/a
&gt;
 프로토콜을 통해서 필요한 이미지 영역을overhead 없이 획득할 수 있도록 했습니다.&lt;/li&gt;
&lt;li&gt;나머지 하드웨어 연동 컨테이너의 Redis 인터페이스 설계와 Node.js TypeScript 객체 지향 설계를 주도했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;애플리케이션 스택에서는 에러 핸들링과 Canvas로 획득 이미지를 스트리밍하는 기능을 개발했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;docker-compose-services&#34;&gt;&lt;code&gt;docker-compose&lt;/code&gt; services&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Name&lt;/th&gt;
          &lt;th&gt;Language&lt;/th&gt;
          &lt;th&gt;Category&lt;/th&gt;
          &lt;th&gt;Features&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;redis&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;Infra&lt;/td&gt;
          &lt;td&gt;Event broker&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;nginx&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Nginx&lt;/td&gt;
          &lt;td&gt;Infra&lt;/td&gt;
          &lt;td&gt;Static server, Reverse proxy, 이미지 스트리밍&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;api&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Service&lt;/td&gt;
          &lt;td&gt;CRUD, Auth, 이미지 처리 Microservice&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;orchestrator&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Node&lt;/td&gt;
          &lt;td&gt;Service&lt;/td&gt;
          &lt;td&gt;하드웨어 상태 모니터링 및 통합 조작&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;detector&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;C++&lt;/td&gt;
          &lt;td&gt;H/W&lt;/td&gt;
          &lt;td&gt;Detector H/W 연동, 기초적인 이미지 처리&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;serial&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Node&lt;/td&gt;
          &lt;td&gt;H/W&lt;/td&gt;
          &lt;td&gt;개별 시리얼 H/W 상태 관리자&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;SQL&lt;/td&gt;
          &lt;td&gt;DB&lt;/td&gt;
          &lt;td&gt;유저, 알고리즘 파라미터, 이미지 목록 관리&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;influxdb&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Flux&lt;/td&gt;
          &lt;td&gt;DB&lt;/td&gt;
          &lt;td&gt;하드웨어 사용 이력 관리&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;s3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Node&lt;/td&gt;
          &lt;td&gt;Infra&lt;/td&gt;
          &lt;td&gt;mmap, 이미지 데이터 관리&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ai&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Service&lt;/td&gt;
          &lt;td&gt;이물 검출 Yolo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;firmware&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;C++, Python&lt;/td&gt;
          &lt;td&gt;Deployment&lt;/td&gt;
          &lt;td&gt;IO controller firmware uploader&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;lessons&#34;&gt;Lessons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;수많은 야근에도 불구하고 프로젝트의 목표가 달성 불가능한 목표로 설정된 탓에 Production에는 도달하지 못했습니다. 이 글은 프로젝트의 완성보다 제 커리어에서 가장 복잡한 문제를 MSA로 어떻게 풀려고 시도했는지를 중점으로 읽어주시길 부탁드립니다.&lt;/li&gt;
&lt;li&gt;객체를 통해 메모리를 간접적으로 관리하는 현대적인 C++ 개발을 경험했습니다. WebAssembly, &lt;a
  href=&#34;https://pybind11.readthedocs.io/en/stable/index.html&#34;
  &gt;pybind&lt;/a
&gt;
 등을 통해서 일부 기능을 Native하게 구동하는 데 관심이 있었는데, 이번 프로젝트에서 쌓은 C++ 경험을 기반으로 미래에 이러한 개발을 맡을 수 있으면 좋겠습니다.&lt;/li&gt;
&lt;li&gt;Redis를 통한 하드웨어 추상화와 하드웨어에 대한 TDD가 효과적으로 작동했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTEwMjE1OTcxODIsLTE2NDQ2MTcxOTAsLT
E5NTk5MzkyNTIsMTg1OTA0NDYzMSwxMDYzNjgyNDgsMTAxMTc1
Mjg0MywtMTcyNzU3Mzg3LDE4MzcxODE5OTksLTIxMzk5MzMzNj
csLTE5MDA2MzE4MjUsMTM0MzU5Mzc3NywtNjY0NzAzMjI4LDE3
MDM5MjQyMjUsLTI4MTI5MTQ5NSwxOTcwNDQ2NzI2LC00NTI0Nj
gyMTgsLTk2MjMyMDQzMSwtMTc4MDI3ODQzOCwxNTY4MTc1NjQ2
LDEwNzgyODY2MjhdfQ==
--&gt;</description>
    </item>
    <item>
      <title>Serverless 기반 신문 PDF 정형화</title>
      <link>https://man.hwangsehyun.com/kp/project/newspaper-pdf/</link>
      <pubDate>Sat, 31 Dec 2022 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/newspaper-pdf/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;이미지만을 고려하는 기존 OCR 서비스와는 달리, PDF에 담긴 정보까지 이용해 모바일 기사로 나타낼 수 있는 정보를 만드는 Serverless 기반 백엔드와 검수용 프론트엔드 개발 프로젝트&lt;/li&gt;
&lt;li&gt;요구 사항을 분석해 AWS Serverless 서비스들을 이용한 구조로 문제를 쪼개고 각 Lambda의 초중반부 개발을 진행했습니다.&lt;/li&gt;
&lt;li&gt;수백 건 단위의 Lambda concurrency를 동원해 수십 페이지 단위의 PDF 정형화를 동시에 진행할 수 있었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;S3 presigned url을 이용해 PDF를 업로드하면 PDF 정형화 Step Function이 호출되도록 구성&lt;/li&gt;
&lt;li&gt;PDF를 HTML로 변환해서 좌표 정보를 추출하는 Lambda 개발 및 유지 보수&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://docs.aws.amazon.com/step-functions/latest/dg/concepts-activities.html&#34;
  &gt;Step Functions Activity Worker&lt;/a
&gt;
를 이용한 이미지 처리 Worker 개발&lt;/li&gt;
&lt;li&gt;모든 Lambda와 Step Function의 event payload 문서화 및 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;milestones&#34;&gt;Milestones&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;마일스톤 별로 집중했던 개발 내용에 따라서 정리했습니다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>웹 기반 강화 학습 시뮬레이션 서비스화</title>
      <link>https://man.hwangsehyun.com/kp/project/rl-sim/</link>
      <pubDate>Thu, 31 Dec 2020 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/rl-sim/</guid>
      <description>&lt;h2 id=&#34;demo&#34;&gt;Demo&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/k-XxmSmooy8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Docker API를 통해 Worker 컴퓨터를 제어해 강화 학습 Training 컨테이너를 구동&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://threejs.org/&#34;
  &gt;three.js&lt;/a
&gt;
와 &lt;a
  href=&#34;https://schteppe.github.io/cannon.js/&#34;
  &gt;cannon.js&lt;/a
&gt;
를 연동해 브라우저 내에 강화 학습 시뮬레이션 환경 구성&lt;/li&gt;
&lt;li&gt;강화 학습 컨테이너와 시뮬레이션 환경을 socket.io 프로토콜을 통해서 환경 정보와 지시 사항을 주고받으며 강화 학습 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;웹 기술을 이용한 3D 로봇 팔 대상의 유연한 강화 학습 환경 구성&lt;/p&gt;</description>
    </item>
    <item>
      <title>플랜트 육상 운송성 평가 시스템</title>
      <link>https://man.hwangsehyun.com/kp/project/ptais/</link>
      <pubDate>Tue, 31 Dec 2019 00:00:00 +0900</pubDate>
      <guid>https://man.hwangsehyun.com/kp/project/ptais/</guid>
      <description>&lt;h2 id=&#34;demo&#34;&gt;Demo&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/C25Gc_6_Zms?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;플랜트 산업 분야에서 대형 화물을 육상으로 운송할 때, 도로의 폭과 장애물의 높이를 고려해서 운송 경로를 탐색한다는 시나리오에 기반해 웹사이트를 개발한 연구&lt;/li&gt;
&lt;li&gt;레거시 PHP 애플리케이션을 PHP JSON API + jQuery AJAX 형태로 재개발하고 Single page application으로 전환, Google Maps SDK를 통한 interactive한 경로와 지도 기능의 비중을 크게 확대했습니다.&lt;/li&gt;
&lt;li&gt;시작지, 경유지, 도착지를 CRUD하고 비용 분석 Report를 생성하는 핵심 기능이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lessons&#34;&gt;Lessons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;자바스크립트 3개월 차에 프로젝트 리드를 맡았지만 무사히 프로젝트를 완료할 수 있어 다행이었습니다.&lt;/li&gt;
&lt;li&gt;로컬에서 개발을 전혀 하지 않고, AWS EC2에 개발 환경을 구축하고 처음부터 Nginx를 통한 HTTPS를 도입해 클라우드 네이티브를 추구했습니다.&lt;/li&gt;
&lt;li&gt;실제로 구현은 못했지만, 위성 사진으로부터 도로 폭 추출, 장애물 높이 추출 등 동료들이 진행한 이미지 처리에 관련한 연구들을 어떻게 AWS Lambda 등을 이용해 어떻게 서비스할 수 있을지 고민했었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
  href=&#34;https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE06648490&#34;
  &gt;Swept Path Analysis 활용 모듈화 플랜트 운송성 평가 알고리즘 및 자동화 시스템에 대한 연구&lt;/a
&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE08753594&#34;
  &gt;웹 기반 육상 모듈화 플랜트 운송 프로젝트 통합 관리 및 분석 시스템 개발&lt;/a
&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE10527014&#34;
  &gt;Pix2pix를 이용한 클라우드 기반 최소 도로 폭 추출 시스템 개발&lt;/a
&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTkxNTEyNzM1NCwxNDEzMjMxNzE5LC0xNz
IyOTc1MDA4LC0xNzQwNjQzMTcxLDE4NDU2OTY1MDIsNzYzNjAx
MzI0LDEyODAxNDM3NjMsLTY3NzAyNjE2NCwtMTUwMzI2MjA1MS
wtMTM1NzY0Mjc1MiwxNTY1NTc3NTAsLTQ2MjkxODMwOCwtMTky
NDM1NzM0NCwtMzEwODQ3MjAyLC0xOTg0MzY5OTIxLDUwOTkzMj
U2MF19
--&gt;</description>
    </item>
  </channel>
</rss>
