전체 글
-
PostgreSQL의 AT TIME ZONE 완벽히 이해하기DB 2025. 10. 17. 16:48
PostgreSQL에서 타임존을 다루다 보면 예상과 다른 결과가 나와 당황한 경험이 있으실 겁니다. 특히 AT TIME ZONE 구문은 입력 타입에 따라 완전히 다르게 동작하는데, 이를 제대로 이해하지 못하면 심각한 버그로 이어질 수 있습니다.이 글에서는 실제 쿼리 결과를 통해 PostgreSQL 타임존 처리의 모든 것을 파헤쳐보겠습니다.기본 환경 설정먼저 테스트 환경을 확인해봅시다.SHOW timezone;-- 결과: UTCSELECT current_date, now();-- 2025-10-17 | 2025-10-17 14:34:00+00세션 타임존은 UTC로 설정되어 있고, 현재 시각은 2025-10-17 14:34 UTC입니다.AT TIME ZONE의 두 얼굴AT TIME ZONE은 입력 타입에 따..
-
gRPC 입문: 서버 간 통신을 간단하게 만드는 Google RPCgRPC 2025. 9. 25. 11:18
gRPC 입문: 서버 간 통신을 간단하게 만드는 Google RPC현대 웹 서비스와 마이크로서비스 환경에서 서버 간 통신은 필수적입니다.그런데 REST API만으로는 대규모, 고성능, 실시간 통신 환경에서 부족함을 느낄 수 있습니다.바로 이런 상황에서 등장한 것이 gRPC(Google Remote Procedure Call)입니다.이번 글에서는 gRPC란 무엇인지, 구조와 특징, 간단한 예제까지 살펴보겠습니다.1. gRPC란 무엇인가?gRPC는 구글이 개발한 원격 프로시저 호출(Remote Procedure Call) 프레임워크입니다.쉽게 말하면,네트워크를 통해 다른 서버의 함수를 마치 내 컴퓨터에서 호출하는 것처럼 사용할 수 있게 해주는 기술입니다.예를 들어, 클라이언트 코드에서 이렇게 작성할 수 있습..
-
사무실 VLAN 설정을 통한 팀별 망분리Network 2025. 9. 9. 16:49
사무실 네트워크에서 VLAN 구성: 공유기와 L2 스위치를 이용한 실무 가이드사무실 네트워크를 효율적으로 구성하려면 **VLAN(Virtual LAN)**을 활용해 부서별, 팀별로 네트워크를 분리하는 것이 중요합니다. 이번 글에서는 공유기와 L2 스위치를 활용한 VLAN 구성 방법을 정리했습니다. (공유기가 VLAN을 지원하며, 스위치는 L2스위치 입니다.)1. VLAN이란?VLAN(Virtual LAN): 물리적인 동일 네트워크를 논리적으로 나누어 서로 다른 네트워크처럼 운영하는 기술장점:팀/부서별 네트워크 분리 가능브로드캐스트 도메인 분리 → 네트워크 효율 향상보안 강화 → 특정 VLAN만 접근 허용 가능2. 네트워크 장비 계층과 역할장비OSI 계층주요 기능허브L1단순 신호 전달, 브로드캐스트스위치L..
-
Git flow, 깃 브러치 관리 전략Git 2025. 9. 8. 16:32
1인 개발자면 크게 와닿지 않겠지만 누군가와 협업을 하다보면 형상관리를 사용할 수 밖에 없습니다. 이 형상관리에도 개념적인 전략이 있습니다. 이 전략을 따라했을때 팀원들간에 협업에 브레이크가 걸리지 않고 시너지가 날 수 있습니다.이런 전략 몇개 중 저는 Git Flow에 대해 얘기 해볼까 합니다.1. Git Flow 개요Git Flow는 Vincent Driessen이 제안한 Git 브랜치 모델입니다.주요 목적은 개발 단계별 브랜치 분리와 릴리즈 관리를 명확히 하는 것입니다.주요 브랜치 종류:브랜치 용도main (또는 master)항상 프로덕션 배포 가능한 상태 유지develop개발 중인 기능을 통합하는 브랜치, 다음 배포 대상feature/*새로운 기능 개발release/*배포 준비, 버그 수정, 버전..
-
Jenkins 구축기CI-CD 2025. 8. 13. 21:14
요즘 사무실에서 이것저것.. 잡다하게 넓은 영역에 대해서 커버하고 있습니다. 그러다 보니 여러프로젝트를 배포할일이 많습니다.이전에는 그렇게 바쁘지 않았어서 호스트에 접근해서 pull 받고 하나하나 배포했는데 이제는... 여력이 없습니다. 목마른 자가 우물을 파듯이 자동배포가 있어야겠다 마음 먹었지요. 우선 jenkins를 docker-compose.yaml로 작성했습니다. version: "3.9"services: jenkins: image: jenkins/jenkins:lts container_name: jenkins restart: unless-stopped privileged: true user: root ports: - "8080:8080" # 웹 ..
-
쿠버네티스 (k8s) Core Dns란?Server 2025. 6. 25. 21:29
쿠버네티스를 사용하다보면 파드(pod)끼리 ip로 연결 하는게 아닌 도메인명으로 통신하는 설정을 많이 보게 됩니다.이 도메인은 뜬금없이 어디서 나타났는지 궁금하기도 하죠. 쿠버네티스는 자기만의 DNS서버를 구동합니다.kube-system이란 네임스페이스에 보면 coredns라는 파드가 보이게 됩니다. 이 파드들이 쿠버네티스 내부에서 DNS서버 역할을 하게 됩니다. A라는 파드가 B라는 파드에 요청을 보내는경우..svc.cluster.local 이라는 도메인명으로 요청을 보내게 되면 됩니다.같은 네임스페이스에 있는경우는 줄여서 만으로도 가능합니다. 좀 더 깊이 들여다보면 A라는 파드에 접근해서 /etc/resolv.conf를 열어보면 알 수 있습니다.해당 파일은 지정된 클러스터 DNS로 전달되게 셋팅되어 ..
-
쿠버네티스 (k8s) 워커노드 추가하기Server 2025. 6. 5. 17:00
저번에 단일노드로 쿠버네티스를 설정했습니다. 그렇게 계속 사용할 순 없고 슬슬 노드를 추가해야겠지요...?그리하여!이번엔 사무실에 셋팅해놓은 추가적인 서버를 워커노드로 추가해보겠습니다. 추가하려는 노드들도 이전과 비슷한 작업을 우선 거쳐야 합니다. 모든 명령어는 워커노드에서 실행시켜주시면 됩니다. 1. swap 메모리 비활성화sudo swapoff -asudo sed -i '/ swap / s/^/#/' /etc/fstab2. 커널 모듈 활성화sudo modprobe overlay && sudo modprobe br_netfilter3. 아이피(IP) 설정 파일# /etc/sysctl.d/99-k8s.confnet.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_for..
-
쿠버네티스(k8s) 온프레미스 환경으로 설치하기Server 2025. 6. 4. 17:15
현재 새로운 프로젝트에 앞서 docker compose를 이용해서 멀티 서버 환경을 구성했습니다. 서버에 장애를 확인하기 위해 모니터링까지 구축해놨지만 장애에 유기적으로 대응하는 부분은 부족하다고 느껴져 k8s에 대해 뒤적뒤적 거리게 되었습니다. k8s를 구축하는데 있어서 클라우드를 활용할 수 있겠지만 우리의 경우 보안으로 인해 클라우드 환경은 이용할 수 없다는 제약이 존재 합니다.그럼 결국 On-premise 환경으로 구축을 해야한다는 것을 의미합니다. 이번 k8s은 1.33.1 버전을 이용하여 구축하게 되었습니다. (2025-06-04 기준 최신버전) 우선은 서버1대 (Ubuntu 24.04 LTS)에 단일 노드 구성으로 진행하고 추후에 노드를 늘려가는식으로 진행하려 합니다. 1. 시스템 준비sudo..