일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 오블완
- 서비스메쉬
- sqs fifo queue
- ssh 에이전트
- GoF
- context7
- golang
- redirect-gateway
- 티스토리챌린지
- 캡슐화
- replication lag
- model context protocol
- 구조체
- go
- javascript
- 디자인패턴
- RDS
- AI
- GIT
- 2024 톨스토이문학상 수상
- Infra
- Intellij
- typescript
- esbuild
- Kubernetes
- cosine similarity metric
- elasticsearch
- AWS
- authorizationpolicy
- goland
- Today
- Total
목록Information Technology (320)
Fall in IT.

1. 배경: 자동 회로 설계 툴과 부품 매칭우리는 자동 회로 설계 도구를 개발하면서, 회로에 배치할 다양한 부품들을 적절히 배치하기 위해 부품의 타입과 카테고리를 자동으로 매칭하는 작업이 필요했다. 사전에 정의된 매칭 데이터가 없는 경우에는 부품 분석 서버에 분석을 요청하고, 그 결과로부터 카테고리와 타입 정보를 전달받는 구조로 설계했다.2. 처리 방식: 비동기 분석과 메시지 응답 구조부품 분석 작업은 종류가 방대하고, 처리 시간도 예측하기 어려웠다. 따라서 동기 요청이 아닌 비동기 방식으로 분석 요청을 보내고, 분석 결과는 메시지 큐를 통해 응답받는 구조를 설계했다. 이렇게 함으로써 시스템은 다양한 부품 분석 요청을 병렬로 처리할 수 있고, 결과는 분산된 여러 인스턴스에서 수신 및 반영할 수 있게 되었..
MSA 아키텍처로 여러 서비스를 운영하면서, 저는 도메인 단위로 유스케이스를 묶는 구조를 사용해 왔습니다.예를 들어, User 서비스에서는인증 관련 로직은 AuthUsecase회원 정보 관련 로직은 UserUsecase이렇게 기능별로 Usecase를 구분해 구성했습니다.AuthUsecase에는 이메일 인증, 휴대폰 인증, 본인 인증 등을, UserUsecase에는 회원가입, 로그인, 유저 정보 조회, 비밀번호 재설정 등 다양한 메서드를 구현해 관리했습니다.처음에는 이 구조가 충분히 단순하고 효과적이었습니다. 하지만 서비스가 점차 확장되고 비즈니스 요구사항이 복잡해지면서 한계가 드러났습니다.문제의 시작: 사용자 유형에 따른 분기 증가시간이 지나면서 User 서비스는 B2B와 B2C 사용자를 동시에 지원하게..
1. 문제 상황어드민 페이지에서 관리자가 신규 상품을 등록한 직후, 목록을 조회했을 때 등록한 상품이 목록에 나타나지 않는 현상이 발생했습니다. 이 문제는 사용자 입장에서 혼란을 줄 수 있고, 등록 여부에 대한 오해로 이어질 수 있기 때문에 즉시 분석이 필요했습니다.2. 문제 확인 과정테스트 중 어드민 페이지에서 상품 등록 후 곧바로 목록을 조회했을 때, 신규 상품이 조회되지 않는 현상을 직접 확인할 수 있었습니다.처음에는 클라이언트 측 캐싱 문제를 의심했지만, 서버에서 응답한 JSON 로그를 추적해본 결과, 실제로 응답 데이터에 새로 등록된 상품이 포함되지 않았습니다.흥미롭게도, 몇 초 후 다시 상품 목록을 조회했을 때는 등록한 상품이 정상적으로 나타났습니다. 또한, 테스트 코드에서 상품 등록 직후 5..
최근 AI 기반 코딩 도구들이 급격히 발전하면서, "정확한 문서 기반 코드 생성"에 대한 수요가 높아졌습니다.특히, 최신 프레임워크/라이브러리는 LLM의 학습 시점을 벗어나기 때문에, 낡은 정보에 기반한 답변이 큰 문제로 떠오르고 있습니다.이 문제를 해결해주는 도구가 바로 Context7입니다.이 글에서는 MCP 프로토콜, Context7의 핵심 기능, 그리고 동작 흐름까지 간단하게 정리합니다.MCP(Model Context Protocol)란?MCP는 Claude, Cursor, Windsurf 등 코딩 어시스턴트 툴이 외부 컨텍스트 소스와 통신할 수 있도록 만든 표준 프로토콜입니다.쉽게 말해, LLM에게 "이 문서도 참고해서 답해줘!"라고 알려줄 수 있게 해주는 통로입니다.MCP는 JSON 기반의 요..
이 글에서는 온프레미스 환경에서 클라우드의 Elasticsearch에 보안적으로 안전하게 접근하기 위해 Istio의 AuthorizationPolicy를 활용하여 특정 도메인만 특정 IP에서 접근 가능하도록 설정한 방법을 공유한다.참고로, 필자가 다니는 회사에서는 클라우드와 온프레미스 환경을 둘다 사용하여 서비스를 운영하고 있다.상황 요약AI 추론 및 학습 서버는 온프레미스에 구축되어 있고,그 외의 서비스의 클라우드 인프라는 AWS EKS에서 운영되고 있다.각 서비스에서 발생하는 로그는 클라우드 Kubernetes에 설치형으로 운영 중인 Elasticsearch에 저장된다.Elasticsearch는 보안상 외부에 노출되지 않고, VPC 내부에서만 접근 가능하도록 설정되어 있다.온프레미스에서 동작하는 서비..

회사나 사무실 내부망(온프레미스)에 접속하기 위해 VPN을 연결했더니 인터넷이 안 된다.. 헐…원인을 분석해서 인터넷과 VPN을 동시에 사용할 수 있도록 해결해보자.어떤 문제가 발생했나?상황macOS 환경에서 Tunnelblick을 이용해 OpenVPN에 접속VPN 인증 후 온프레미스 리소스에는 잘 접속 됨 (AI 추론 및 학습에 사용되는 사내 온프레미스 서버)그런데… 로컬 PC에서 인터넷이 안 됨원인전달받은 vpn 접속을 위한 설정 정보에 아래와 같은 옵션이 추가 되어 있었다.# 이 옵션은 모든 네트워크 트래픽을 VPN을 통해서만 나가도록 만드는 설정이다. # 즉, Google 검색도 VPN을 통해서 나가기 때문에 # VPN 서버가 외부 인터넷이 연결되지 않는 상황이라면 인터넷이 안되는 것이다. red..

삶은 견딜 만한 것이다. 시간이 모든 것을 잊게 해주기 때문에.그래도 삶은 살아볼 만한 것이다. 사랑이 모든 것을 기억하게 해주기 때문에. - 작은 땅의 야수들 중 김주혜 작가의 장편소설 작은 땅의 야수들 을 읽으며 문득 떠오른 생각이다. 이 책은 단순히 한 시대를 배경으로 한 소설이 아니라, 그 시절을 '살았던' 사람들의 감정과 풍경을 눈앞에 펼쳐 보이는 듯한 작품이었다. 한국의 근현대사를 다룬 많은 책들이 있지만, 작은 땅의 야수들 은 그 시대를 말로 설명하기보다 피부로 느끼게 한다.차가운 ..

개요새로운 노트북을 사용할 때, GitHub 저장소를 안전하게 복제(Clone)하기 위해서는 SSH 키를 사용하여 인증 과정을 설정해야 합니다.이 문서에서는 SSH 키를 생성하고 GitHub에 등록하여 저장소를 SSH 방식으로 clone 받을 때까지의 과정을 단계별로 설명하고, 각 과정의 이유도 함께 설명합니다.왜 SSH 키를 사용해야 할까?GitHub은 보안을 위해 저장소에 접근할 때 인증을 요구합니다.기본적으로 두 가지 방식이 있습니다.HTTPS 방식: 매번 사용자 이름과 비밀번호(또는 Personal Access Token)를 입력해야 함SSH 방식: 한번 키를 설정해두면 비밀번호 입력 없이 안전하게 통신 가능SSH 키를 사용하면,비밀번호 없이 편하게 작업할 수 있고키 기반 인증은 훨씬 안전합니다...
Go 언어로 개발을 하다 보면, 구조체(struct)를 설계할 때 필드를 공개(public)로 해야 할지, 비공개(private)로 해야 할지 고민되는 경우가 많다. 캡슐화를 위해 private으로 설계했다가, 실제 사용 시 불편해지는 경험도 흔하죠. 그렇다면 Go에서는 어떤 기준으로 필드의 접근 범위를 설정하는 것이 좋을까? 이 글에서는 Go 언어의 철학에 기반해, 구조체 필드를 언제 public으로 두고 언제 private으로 설정하는 것이 적절한지를 설명하고자 한다.Go 언어의 철학: 실용성과 단순성Go 언어는 "실용적이고 단순한 언어"를 목표로 설계되었습니다. 창시자 중 한 명인 Rob Pike는 다음과 같이 말했다:"불필요한 복잡성을 피하라""명확성이 미묘한 기교보다 낫다" 이 철학은 구조체 ..

안녕하세요.오늘은 최근 회사에서 진행 인증 방식을 개선한 내용을 정리해보도록 하겠습니다.1. 기존 인증방식HTTP 헤더를 이용한 JWT 인증기존에는 클라이언트가 서버와 통신할 때, JWT(Json Web Token)를 HTTP 헤더의 Authorization 필드에 포함하여 요청을 보내고 이를 인증하는 방식이었습니다. 이 방식은 주로 다음과 같이 동작합니다. 기존 인증 방식 흐름클라이언트가 로그인 시 서버에서 JWT 토큰 (access token, refresh token)을 발급클라이언트는 API 요청 시 HTTP 헤더의 Authorization 필드에 access token을 포함하여 보냄서버는 Authorization 헤더에 포함된 토큰을 검증한 후 요청을 처리토큰이 만료되었을 경우, refresh..