<?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>Security on man.hwangsehyun.com</title>
    <link>https://man.hwangsehyun.com/kp/tags/security/</link>
    <description>Recent content in Security 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>Tue, 30 Apr 2024 00:00:00 +0900</lastBuildDate>
    <atom:link href="https://man.hwangsehyun.com/kp/tags/security/index.xml" rel="self" type="application/rss+xml" />
    <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>Security Routines</title>
      <link>https://man.hwangsehyun.com/kp/tech/security/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://man.hwangsehyun.com/kp/tech/security/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;어떻게 보면 당연한 관습들을 풀어서 글로 남겼습니다.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;routines&#34;&gt;Routines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a
  href=&#34;https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html&#34;
  &gt;&lt;strong&gt;IAM&lt;/strong&gt;&lt;/a
&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Production 환경에서는 &lt;a
  href=&#34;https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html&#34;
  &gt;Lambda execution role&lt;/a
&gt;
과 &lt;a
  href=&#34;https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html&#34;
  &gt;EC2 IAM role&lt;/a
&gt;
 등의 &lt;a
  href=&#34;https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html&#34;
  &gt;IAM temporary credential&lt;/a
&gt;
 기능을 활용합니다.&lt;/li&gt;
&lt;li&gt;리소스에게 부여된 권한들은 해당 리소스의 동작에 대한 명세이기도 하다고 생각하고 있으며, Service role에 Least privilege rule을 최대한 준수했습니다.&lt;/li&gt;
&lt;li&gt;프로젝트 별로 User group을 만들고 개발자들에게 개발에 필요한 권한을 부여합니다.&lt;/li&gt;
&lt;li&gt;&lt;a
  href=&#34;https://cli.github.com/manual/gh_auth_login&#34;
  &gt;GitHub CLI SSO&lt;/a
&gt;
, &lt;a
  href=&#34;https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html&#34;
  &gt;AWS CLI SSO&lt;/a
&gt;
 등의 SSO 서비스를 사용해 개발자가 개발에 필요한 권한을 획득할 수 있도록 도입 중입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Secrets Management&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
