전체 글 17

Chapter1. Computer Networks and The Internet

Chapter1. Computer Networks and The Internet1.1 What Is the Internet?1.1.1 A Nuts-and-Bolts Description인터넷 : 전 세계 수십억 대의 컴퓨터 기기를 상호 연결하는 컴퓨터 네트워크통신링크종단 시스템패킷 스위치ISP(인터넷 서비스 사용자)프로토콜인터넷 표준1.1.2 A Services Description인터넷을 보는 두가지 관점애플리케이션소켓 인터페이스1.1.3 What Is A protocol?사람이 대화할때 규칙을 통해 소통하듯이, 네트워킹에서도 작업을 수행하기 위해 동일한 플토콜을 실행하는 두개 이상의 통신 주체가 필요두 개 이상의 원격 통신 주체가 관여하는 인터넷상의 모든 활동은 프로토콜에 의해 관리됨프로토콜 : 두 ..

전공수업 2026.03.29

80포트 차단으로인한 SSL 인증서 발급문제 트러블슈팅

https://sh1220.tistory.com/15 나만의 프라이빗 클라우드 구축해보자 / Proxmox0. 어쩌다 구축을 시작하게 되었는가최근에 쿠버네티스를 공부하면서 실제로 K8s를 통해서 구현해보고 싶다는 생각이 들었다.또한 졸업 프로젝트를 위해 인프라를 구축하기위해 AWS만 사용하기sh1220.tistory.com이전에 언급했듯이 공유기에 자주 사용하는 포트들이 너무 많이 막혀있었다.하여 시간이 좀 지났지만, 해당 문제를 해결한 과정을 남겨보고자한다.1. 문제 인식1) 기존 방식일반적으로 자주사용하는 방법은 80포트를 열고 certbot을 이용하는 것이다.certbot이 원하는 path에 원하는 값을 나오게 설정해두면, certbot이 진짜 해당 소유주임을 확인하고 인증해주는 방법이다.다만, 나..

Infra 2026.03.04

나만의 프라이빗 클라우드 구축해보자 / Proxmox

0. 어쩌다 구축을 시작하게 되었는가최근에 쿠버네티스를 공부하면서 실제로 K8s를 통해서 구현해보고 싶다는 생각이 들었다.또한 졸업 프로젝트를 위해 인프라를 구축하기위해 AWS만 사용하기에는 비용이 생각이 들었다. 단순히 EC2만 mciro로 띄운다면 괜찮겠으나, 주제 특성상 어느정도의 가용성이 필요하여 AWS 아키텍처를 그리다보니 비용이 문제가되었다.그래서 졸업프로젝트 뿐만 아니라, 나중에 프로젝트를 진행할 때 K8s를 통해 구축을 위한 개인 프라이빗 클라우드가 필요했다.처음에는 openstack을 고려했으나 실제로 사용하기에는 너무나 무겁기 때문에, proxmox로 VM/스냅샷의 기능들을 구현해보았다.1. Proxmox란?1) Type1 Hypervisor vs Type2 HypervisorType1..

Infra 2026.02.08

Kubernetes Volume/Mount/Claim

이 글은 "쿠버네티스 교과서 | 엘튼 스톤맨"의 책의 내용을 참고하여 작성됨을 알립니다. 쿠버네티스에서 “데이터가 남는다”는 말은 결국 파드/컨테이너가 재시작/교체되더라도 데이터가 보존되는가의 문제다.이 장은 그걸 가능하게 만드는 볼륨, 마운트, 영구볼륨(PV), 영구볼륨클레임(PVC), 스토리지클래스(StorageClass)를 다룬다.1. 컨테이너가 재시작되면 데이터가 사라지는 이유컨테이너의 파일시스템은 기본적으로 이미지 레이어 + writable layer로 동작한다.이 구조를 이해하면 “왜 볼륨이 필요한지”가 바로 설명된다.1-1) killall5로 컨테이너 종료 시키기killall5는 일반적인 killall이 아니라 리눅스에서 시스템 종료 과정에서 거의 모든 프로세스를 죽이는 명령이다.주로 ini..

Kubernetes 2026.01.31

Kubernetes Network

이 글은 "쿠버네티스 교과서 | 엘튼 스톤맨"의 책의 내용을 참고하여 작성됨을 알립니다.파드끼리의 통신을 위해 쿠버네티스는 TCP와 UDP를 지원이는 IP 주소로 트래픽이 제어됨하지만, pod를 대체할때마다 주소가 변경되는 문제가 존재=> Service에 address discovery 기능을 제공pod쿠버네티스에서 부여한 IP 주소를 가진 가상환경다른 컨트롤러 객체에 의해 생애 주기가 관장되는 '쓰고 버리는' 리소스=> 파드가 새로운 파드로 교체될때 IP주소가 바뀜kubectl exec [deploy 이름] -- ping -c 2 $(kubectl get pod -l app [목적 pod 이름] --output jsonpath='{.items[0].status.podIP}'위와 같이 podIP를 조회하..

Kubernetes 2026.01.18

Kubernetes Pod와 Deployment

이 글은 "쿠버네티스 교과서 | 엘튼 스톤맨"의 책의 내용을 참고하여 작성됨을 알립니다.1. 쿠버네티스란?컨테이너를 실행하는 플랫폼애플리케이션의 시작, 롤링 업데이트, 서비스 수준 유지, 수요에 따른 스케일링, 보안 접근 등 다양한 기능 제공두가지 핵심 개념 API : 애플리케이션 정의에 사용클러스터 : 애플리케이션이 실제로 동작 (도커 같은 런타임이 동작하는 여러대의 서버가 모여 하나의 논리적 단위를 구성노드 : VM혹은 bare-metal과 같은 하나의 서버를 뜻함클러스터 관리자는 이 노드라고 하는 각가의 서버 관리과정YAML 파일에 애플리케이션 기술쿠버네티스 API에 YAML 파일 전달쿠버네티스가 파일에 기술된 애플리케이션 구성을 이해하고 현재상태와 비교현재 상태와 기술된 상태 차이에 따라 컨테이너..

Kubernetes 2026.01.04

DB 트래픽 처리와 캐시 불일치를 해결하는 방법들

최근 MSA나 DB를 공부하던 중, DB와 캐시를 자주 사용하지만, 그 안의 트래픽 문제나 정합성 문제는 어떻게 해결을 해야하나 궁금증이 들게되었다. 그래서 다시 처음부터 집고 가자는 생각으로 정리하고자 한다. 1. DB 트래픽 과부화먼저 DB 시스템은 확장하기 어려운 시스템이다.주로 샤딩과 replica를 통해 확장하지만, 일관성/가용성/분할 내성 셋을 모두 만족 시킬수 없다는 CAP 이론이 널리 알려져있다.그래서 DB의 부하를 최소화하여 확장 필요성을 줄이는 것이 제일 첫번쨰로 생각해야할 일이다.이를 위해 우리는 빠르고 사용하기 쉬운 Redis와 같은 인메모리 저장소로 캐시 시스템을 구축하여 사용한다.하지만 이때 몇가지 고려해야할 사항이 있다. 1. 캐시 쇄도(Cache Stampede)캐시는 일정 ..

DB 2025.12.28

디자인 패턴 - 생성 패턴, 2) Abstract Factory

1. 추상 팩토리가 필요한 이유 초기 코드에서 UI 컴포넌트를 만들 때 보통 이렇게 쓴다고 해보자.Button button = new WindowsButton();Checkbox checkbox = new WindowsCheckbox();여기서 문제는 서로 관련된 여러 컴포넌트(Button, Checkbox, TextField…)가 “세트”로 움직여야 한다는 점이다. 예를 들어제품군(패밀리):Button, Checkbox, TextField, Dialog …변형(스타일/플랫폼):Windows 스타일MacOS 스타일Linux / Web 등우리가 원하는 건Windows용 UI를 쓸 때는 모든 컴포넌트가 Windows 스타일MacOS에서는 전부 MacOS 스타일섞이면 안 됨 (Mac 버튼 + Windows ..

Computer Science 2025.11.23