전체 보기157 Docker Registry와 Docker 실행 구조 (Harbor, Desktop, Engine, WSL2) 최근 Docker에 대해 학습하며 Harbor를 이용해 Private Registry 서버를 구축해보았다. 이 과정에서 Docker Registry 개념과 Docker Hub, Docker Desktop에 대해 궁금증이 생겼고, Docker Desktop 없이 Windows 환경에서 어떻게 Docker Engine을 실행하는지 정리하게 되었다.Docker Harbor에 아주 간단한 PR로 올렸다!Docker Registry란?Docker Registry는 Docker Image를 저장하고 배포하는 저장소 서버이다.Docker는 컨테이너 실행 시 이미지를 Pull 하거나 Push 하는데, 이때 Registry 서버를 이용한다.Docker HubDocker Hub는 Docker에서 공식 제공하는 퍼블릭 Re.. 2026. 1. 24. HTTPS 동작 원리와 Certbot을 이용한 적용 방법 HTTPS는 HTTP에 SSL/TLS 암호화 계층을 추가한 통신 방식이다.즉, HTTPS는 HTTP + TLS(Transport Layer Security) 로 구성되어 있으며,다음 세 가지 목표를 동시에 만족하도록 설계되었다.서버 인증(Authentication)기밀성(Confidentiality)무결성(Integrity)HTTP의 한계기본 HTTP 통신은 다음과 같은 문제를 가진다.데이터가 평문으로 전송됨중간자 공격(MITM)에 의해 데이터 도청·변조 가능접속한 서버가 진짜 서버인지 검증 불가HTTPS는 이러한 문제를 TLS Handshake + 암호화 통신으로 해결한다.HTTPS 통신 과정HTTPS 통신은 최초 연결 시 TLS Handshake를 수행한 뒤, 암호화된 HTTP 통신을 진행한다.전체 .. 2026. 1. 11. 2025 회고 회고를 작성하는 이유한 해를 돌아보면서 목표를 얼마나 달성했는지 확인하고,부족했던 점을 점검한 뒤 다음 해를 더 잘 보내기 위한 방향을 잡기 위해서2025년의 목표2025년의 가장 큰 목표는 취업이었다.결과적으로 취업에 성공했고, 목표 자체는 달성했다고 볼 수 있지만, 취업 이후 하반기에는 원래 계획했던 것들을많이 해보지 못한 점이 조금 아쉽게 남는다.회사생활 1SM 개발자로 입사했고, 유닛에서 담당하는 서비스가 4개였는데그중 하나가 막 새로 오픈한 신규 서비스였다. 오픈 초반이라 오류가 정말 너무 많았다.진짜 진짜 너무 힘들었다… 그래도 다행히 지금은 비교적 많이 안정화됐고, 회사도 적응해서 꽤 괜찮아졌다.맨날 힘들다고 동기들한테 맨날 찡찡거렸는데… 고마워 얘들아~~회사생활2최근에 진행하던 프로젝트가 .. 2025. 12. 26. Redis와 Event Loop 그리고 Netty, Virtual Thread Redis가 빠른 이유는 인메모리 기반으로 동작하기 때문이며, 여기에 더해 단일 스레드 + Event Loop 구조를 사용하기 때문이다.그렇다면 단일 스레드 기반의 Event Loop 구조는 왜 빠른 걸까?이번 글에서는 Redis의 Event Loop 구조를 중심으로, Netty의 Event Loop, Event Loop의 핵심 특징인 Non-blocking I/O, 그리고 논블로킹처럼 보이지만 다른 개념인 Java Virtual Thread까지 함께 정리해보려고 한다.Redis가 단일 스레드를 선택한 이유Redis는 설계 단계부터 초고속, 저지연 처리를 목표로 삼았고, 이를 위해 단일 스레드라는 매우 단순하지만 강력한 전략을 선택했다.1. 락(lock)이 필요 없다 (경쟁 비용 제거)멀티스레드 환경에서.. 2025. 11. 17. @Transactional은 private 메서드에서 동작할까? (Spring AOP) @Servicepublic class OrderService { public void placeOrder() { System.out.println("주문 시작"); saveOrder(); // 내부 호출 System.out.println("주문 완료"); } @Transactional private void saveOrder() { System.out.println("DB에 주문 저장"); }} @Transactional은 private 메서드에서 동작할까? 정답은 “동작하지 않는다.”그렇다면 왜 @Transactional은 private 메서드에서 작동하지 않을까?이유를 알기 위해서는 먼저 @Transactional이 어떻게 .. 2025. 10. 14. #2 Loki와 Promtail을 이용해 Grafana에서 로그 데이터 시각화하기 저번 글(https://bangbaeking.tistory.com/166)에서는 Prometheus와 Grafana를 활용해 메트릭 데이터 모니터링 환경을 구축하는 방법에 대해 알아보았다.이번 글에서는 Loki와 Promtail을 이용해 로그(Log) 데이터 모니터링 환경을 구축해보려고 한다.로그(Log)란?로그는 시스템이나 애플리케이션이 동작하면서 발생하는 이벤트 기록이다. 예를 들어 서버 시작·종료, 오류 메시지, 사용자 요청, 디버깅 정보 등이 모두 로그에 해당한다.이러한 로그는 장애 원인 분석, 성능 진단, 보안 감사 등 다양한 목적에 활용되며, 운영 환경에서 빠르고 체계적으로 수집·분석할 수 있는 시스템이 필수적이다.Loki란?Loki는 Grafana Labs에서 개발한 로그 수집,저장,조회 시.. 2025. 10. 13. 토큰, 세션 차이점 비교 최근 프로젝트에서 인증 관련 코드를 확인하다가, 토큰과 세션에 대해 다시 한번 공부하게 되었다. 예전에 블로그에 토큰 관련 내용을 정리한 적이 있지만 시간이 많이지나서 다시 정리해보려한다.토큰과 세션의 가장 큰 차이토큰과 세션의 핵심적인 차이는 데이터를 서버에 저장하느냐, 저장하지 않느냐이다.세션(Session) 은 사용자의 상태를 서버 측 저장소(메모리, DB, Redis 등)에 저장한다.토큰(Token) 은 사용자 정보를 자체적으로 담고 있으며, 서버는 해당 토큰을 검증하기만 한다.물론 토큰 방식도 고도화 과정에서 서버에 데이터를 저장하는 경우가 생긴다.JWT 토큰이란?JWT(Json Web Token)는 인증 정보를 안전하게 전달하기 위해 JSON 기반으로 인코딩된 토큰이다.구조는 Header.Pa.. 2025. 9. 27. [JSP] JSP의 등장 배경, 동작 원리, 장단점 회사에서 JSP를 사용하는 프로젝트에 참여하게 되었다. 요즘 JSP라고 하면 흔히 “옛날 기술”이라는 평가를 받지만, JSP가 처음 등장했을 당시에는 웹 개발 패러다임을 크게 바꾼 혁신적인 기술이었다.무엇보다 어떤 기술이든 등장 배경, 장단점, 동작 원리를 이해하고 사용하는 것과 그렇지 않은 것 사이에는 큰 차이가 있다고 생각한다. 그래서 이번 기회에 JSP에 대해 정리해보려 한다.JSP의 등장 배경초기 웹 개발에서 HTML은 정적인 페이지로만 동작했기 때문에 서버에서 동적으로 데이터를 삽입하기 어려웠다. 이를 해결하기 위해 등장한 것이 Servlet이다.하지만 Servlet은 자바 코드 안에 HTML을 문자열로 작성해야 해서, 가독성이 떨어지고 유지보수가 어려운 문제가 있었다.// Servlet 예시 .. 2025. 9. 7. #1 Prometheus + Grafana 모니터링 구축하기 저번글(https://bangbaeking.tistory.com/165)에서 모니터링과 옵저버빌리티에 대해 알아봤다.옵저버빌리티가 “왜 그런 일이 일어났는가?”를 추론하는 과정이라면, 모니터링은 그 신호를 지속 관측하고 경보/대시보드로 운영을 돕는 방식이다.보통 Metrics / Logs / Traces 세 축을 함께 다루지만, 이번글에서는 모니터링과 Metric에 대해 알아보고 실습을 진행해보려고한다.메트릭 수집 모델메트릭 수집 방식에는 Push-based Collector 와 Pull-based Collector가 있다.Push-based Collector장점방화벽/NAT 환경에서 바깥으로만 전송하면 되므로 네트워크 제약 대응에 유리각 타겟에서 원하는 대로 메트릭 세밀하게 조절수집 주기나 데이터 형식.. 2025. 8. 31. 이전 1 2 3 4 ··· 18 다음