전체 글 72

CloudFront 배포 후 로그인 풀림 현상 해결 (세션 쿠키 미저장 이슈)

안녕하세요! 오늘은 AWS 인프라 구축 중에 겪었던 "로그인 세션이 자꾸 풀리는 문제"에 대한 트러블슈팅 과정을 기록으로 남겨두려 합니다.로컬 환경(Localhost)에서는 아무 문제 없이 잘 되던 로그인이, AWS EC2에 배포하고 CloudFront(CDN)를 연결하자마자 로그인이 안 되거나 페이지 이동 시 바로 풀려버리는 현상이 발생했는데요.범인은 바로 CloudFront의 캐시 정책과 브라우저의 쿠키 보안 정책이었습니다. 어떻게 해결했는지 정리해 보겠습니다.1. 문제 상황 (Symptoms)개발한 Admin 페이지를 배포한 후 다음과 같은 증상이 나타났습니다.🔐 로그인 풀림: Admin 로그인 성공 후, 다른 페이지로 이동하거나 뒤로가기를 누르면 로그인이 풀림.🍪 쿠키 실종: 브라우저 개발자 ..

CS/INFRA 2025.12.24

Lambda 외부 라이브러리 적용 가이드 (ZIP, Layer, Docker)

AWS Lambda에서 boto3 같은 기본 라이브러리 외에 다른 패키지를 사용하려면 직접 포함시켜야 합니다. 이 글에서는 Lambda에 외부 라이브러리를 추가하는 3가지 방법(ZIP, Layer, Docker)과 주의사항을 정리합니다. 1. ZIP 업로드가장 기본적인 방법입니다. 코드와 라이브러리를 함께 압축해서 업로드하는 방식입니다.디렉토리 구조lambda.zip/├── handler.py # Lambda 코드├── pypdfium2/ # 외부 라이브러리├── PIL/ # 외부 라이브러리└── ... 패키지 설치 방법Lambda는 Amazon Linux 환경에서 실행되기 때문에, Windows나 Mac에서 작업할 경우 반드시 Linux용 바이..

CS/INFRA 2025.11.26

WSL2 + Docker 개발 환경을 외부에서 접속하기

로컬(WSL2 + Docker)에서 개발 중인 서비스를 모바일에서 테스트하거나, 외부에서 시연해야 할 때가 있습니다. 이번 글에서는 공유기, Windows 포트 프록시, 그리고 Docker Nginx를 활용해 외부 IP로 로컬 개발 환경에 접속하는 전체 흐름과 설정 방법을 정리합니다. 전체 아키텍처 흐름외부 요청이 내부의 Docker 컨테이너까지 도달하는 과정은 다음과 같습니다.외부 접속: http://[공인IP] 접속 (포트 80)공유기 (Port Forwarding): 외부 포트 80을 PC 내부 IP([내부IP])의 80 포트로 전달Windows (Port Proxy): Windows 80 포트로 들어온 요청을 WSL의 IP 80 포트로 전달Docker (Nginx): 리버스 프록시가 요청 경로(/..

CS/INFRA 2025.11.26

grafana에 loki 등록

아이디와 비밀번호 입력 후 들어갑니다.데이터 소스 추가하기로 들어갑니다. 로키를 찾습니다. http 방식으로 해놨기 때문에 loki의 url을 입력해줍니다. 여기선 k8s 환경이기 때문에 serivce 이름 입니다. save & test를 눌러주어 연결을 확인해줍니다. 익스플로러로 이동합니다. 라벨브라우저에서 원하는 라벨을 선택거나 코드를 누른 후쿼리를 입력하고 run query를 클릭하면결과물이 나오게 됩니다.

CS/INFRA 2025.10.11

Loki syntax error: unexpected IDENTIFIER 에러

올바른 logql를 입력했는데도 에러가 발생합니다. https://github.com/grafana/grafana/issues/84144 Explore Loki: Failed to load log volume for this query · Issue #84144 · grafana/grafanaWhat happened? When browsing to Explore for Loki the Log Volume displays Failed to load log volume for this query parse error at line 1, col 77: syntax error: unexpected IDENTIFIER What did you exp...github.comhttps://community.grafan..

CS/INFRA 2025.10.09

wsl 환경에서 vagrant 실행 시 확인해야 될 것

이렇게 반복된다면 vagrant plugin install virtualbox_WSL2wsl 용 플러그인을 설치해주시면 됩니다. https://stackoverflow.com/questions/65001570/connection-refused-in-vagrant-using-wsl-2 Connection Refused in Vagrant using WSL 2I am trying WSL 2, also trying Vagrant on it. I used it in Ubuntu 20.04 and it is working properly, but now i am facing problem here in WSL 2 in Windows 10. My Problem might be about SSH problem on...

CS/INFRA 2025.10.09

RAG(Retrieval-Augmented Generation) 공부 정리

RAG를 공부하게 된 계기취업 준비를 하면서 여러 회사 채용공고를 보니 "RAG", "LLM 활용", "벡터 DB" 같은 키워드가 자주 보였습니다. 특히 AI 관련 직무가 아닌 백엔드 개발자 포지션에서도 이런 기술 스택을 요구하는 경우가 많더라구요.ChatGPT는 써봤지만 RAG가 정확히 뭔지 몰라서 이번 기회에 제대로 공부해보기로 했습니다.RAG란 무엇인가RAG(Retrieval-Augmented Generation)는 검색(Retrieval)과 생성(Generation)을 결합한 기술입니다.일반적인 ChatGPT같은 LLM은 학습된 데이터만으로 답변하지만, RAG는 외부 문서를 실시간으로 검색해서 그 내용을 바탕으로 답변을 생성합니다. 쉽게 말해 AI에게 참고자료를 주고 답변하게 만드는 방식입니다.예..

CS/CS 2025.09.17

Vagrant + Skaffold + MetalLB로 로컬 k8s 개발 환경 구축하기

Vagrant로 진짜 쓸만한 로컬 K8s 개발환경 만들기 최근에 로컬에서 Kubernetes 개발환경을 제대로 구축해보려다가 예상보다 많은 시행착오를 겪었습니다. Docker Desktop의 K8s나 minikube로는 실제 프로덕션 환경을 충분히 시뮬레이션하기 어려웠기 때문에, Vagrant를 이용한 멀티노드 클러스터를 구축하기로 결정했습니다.하지만 이것만으로는 충분하지 않았습니다.왜 굳이 Vagrant로 구축했나Docker Desktop의 Kubernetes나 k3s, minikube 같은 경량 솔루션들은 분명 편리하지만 몇 가지 한계가 있었습니다.단일 노드 구조로 인한 제약: 노드 장애 시나리오나 파드 분산 배치 테스트가 불가능 (k3s도 로컬에서는 주로 단일 노드로 사용)LoadBalancer 타..

CS/INFRA 2025.09.17

객체 지향 프로그래밍의 5대 원칙(SOLID)

들어가기 전이전 포스팅에서 객체 지향 프로그래밍에 대해 배웠습니다. 그렇다면 객체 지향 프로그래밍을 위해선 어떤 방법론이 필요할까요?OOP의 5대 원칙 (SOLID)SRP - 단일 책임 원칙 (Single Responsibility Principle)한 클래스는 하나의 책임만 가져야 합니다. 이는 클래스가 변경되어야 하는 이유가 한가지여야 한다는 의미입니다. 해당 클래스가 여러 대상 또는 기능들에 대해 책임을 가져서는 안되고, 오직 하나의 기능에 대해서만 책임을 져야 한다는 것입니다.만약 어떤 클래스가 여러 액터에 대해 기능을 가지고 있다면 여러 클래스들로 부터 변경에 대한 요구가 올 수 있으므로, 해당 클래스을 수정해야 하는 이유 역시 여러개가 될 수 있습니다. 반면에 어떤 클래스가 단 하나의 책임 만..

CS/CS 2025.09.17

객체 지향 프로그래밍의 5대 원칙(SOLID)

들어가기 전이전 포스팅에서 객체 지향 프로그래밍에 대해 배웠습니다. 그렇다면 객체 지향 프로그래밍을 위해선 어떤 방법론이 필요할까요?OOP의 5대 원칙 (SOLID)SRP - 단일 책임 원칙 (Single Responsibility Principle)한 클래스는 하나의 책임만 가져야 합니다. 이는 클래스가 변경되어야 하는 이유가 한가지여야 한다는 의미입니다. 해당 클래스가 여러 대상 또는 기능들에 대해 책임을 가져서는 안되고, 오직 하나의 기능에 대해서만 책임을 져야 한다는 것입니다.만약 어떤 클래스가 여러 액터에 대해 기능을 가지고 있다면 여러 클래스들로 부터 변경에 대한 요구가 올 수 있으므로, 해당 클래스을 수정해야 하는 이유 역시 여러개가 될 수 있습니다. 반면에 어떤 클래스가 단 하나의 책임 만..

CS/CS 2025.09.16