일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 티스토리챌린지
- javascript
- AI
- 오블완
- GIT
- AWS
- 캡슐화
- golang
- model context protocol
- go
- Kubernetes
- 코사인 유사성 메트릭스
- Intellij
- RDS
- 2024 톨스토이문학상 수상
- ssh 에이전트
- Infra
- elasticsearch
- GoF
- context7
- replication lag
- 구조체
- authorizationpolicy
- typescript
- cosine similarity metric
- redirect-gateway
- esbuild
- 서비스메쉬
- goland
- 디자인패턴
- Today
- Total
목록Information Technology (318)
Fall in IT.
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..
ESBuild는 JavaScript와 TypeScript 코드를 빠르게 번들링하고 변환(트랜스파일링)하기 위한 고성능 빌드 도구입니다. Evan Wallace가 개발했으며, 속도와 효율성을 극대화하는 것을 목표로 설계되었습니다.ESBuild의 주요 특징빠른 속도:ESBuild는 Go 언어로 구현되어 있어 단일 스레드에서도 매우 빠른 성능을 발휘합니다.병렬 처리가 가능하여 멀티 코어 CPU 환경에서도 속도가 빠릅니다.TypeScript와 Babel 기반 도구에 비해 10~100배 더 빠릅니다.지원하는 언어와 기능:JavaScript: 최신 ES6+ 문법 지원.TypeScript: 트랜스파일링을 기본적으로 지원하지만, 타입 검사는 수행하지 않음.JSX/TSX: React 문법 지원.CSS: CSS 코드를 번..
tsx와 ts-node는 각각 타입스크립트를 실행하기 위한 도구지만, 두 도구는 서로 다른 사용 사례와 강점이 있어서 공존하고 있습니다. ts-node와 tsx 모두 런타임에 TypeScript를 JavaScript로 트랜스파일링하고 실행하지만, tsx가 더 빠른 이유는 트랜스파일링 방식, 캐싱 전략, 그리고 ES 모듈 처리 최적화 때문입니다. 아래에 두 도구의 작동 방식과 성능 차이의 이유를 자세히 설명드리겠습니다.1. 트랜스파일링 방식의 차이ts-node:ts-node는 TypeScript 컴파일러(tsc) 또는 TypeScript 서비스(typescript)를 사용해 TypeScript 코드를 JavaScript로 변환합니다.이 과정은 컴파일러가 전체 코드를 읽고 변환하므로 무겁고 느릴 수 있습니다..