N° 01 — 목록

'container' (4)

  1. Infra Architecture/Compute Platforms

    Compute Platforms - 07. 컨테이너 런타임

    한 커널을 나눠 쓰는 더 가벼운 가상화 — 컨테이너 런타임2013년 3월, Docker가 샌프란시스코의 Python 컨퍼런스에서 첫 데모를 했다. "5초 만에 PostgreSQL을 띄우세요"라는 발표가 화면에 떴다. 발표자가 docker run postgres 한 줄을 치자, 수 초 만에 PostgreSQL이 실행됐다 — VM을 만들고 OS를 설치하고 패키지를 깔 필요 없이. 청중은 박수를 쳤지만, 많은 사람이 "이게 VM보다 왜 빠른 건가?"라는 질문을 품고 있었다. 답은 단순했다 — 컨테이너는 VM처럼 완전한 OS를 복제하지 않는다. 한 OS 커널을 여러 컨테이너가 나눠 쓰면서 격리만 한다. OS 부팅이 없으니 빠를 수밖에.이 글은 컨테이너(container)와 컨테이너 런타임(container ru..

    · 댓글 1
  2. Cloud & Infrastructure/Kubernetes

    Kubernetes - 04. pod

    왜 컨테이너 하나만 띄우면 "Pod"라는 포대까지 필요한가처음 Kubernetes를 배우는 사람은 거의 다 같은 의문을 갖는다. 컨테이너를 하나 띄우고 싶을 뿐인데, 왜 kind: Pod에 containers: 배열을 넣고 그 안에 컨테이너를 적어야 하나? Docker처럼 그냥 컨테이너를 실행하면 안 되나?이 질문은 사소해 보이지만 Kubernetes의 가장 근본적인 설계 결정을 건드린다. 왜 Kubernetes는 컨테이너를 직접 다루지 않고 Pod라는 한 겹 더 두른 단위를 배포의 최소 단위로 삼았는가? 이 글의 답은 단순하다 — Pod는 컨테이너가 아니라 "함께 죽고 함께 사는 컨테이너들의 묶음"이며, 이 묶음이 공유하는 것(네트워크·스토리지·생명)이 Kubernetes의 모델을 만든다.Pod는 컨테..

    · 댓글
  3. Backend Development/Spring

    Spring - 02. container bean lifecycle

    Bean이 생성되고 사라지기까지 — 컨테이너와 생명주기의 모든 단계@PostConstruct 메서드 안에서 null을 역참조해 NullPointerException이 났다. 의존성은 분명 @Autowired로 주입해뒀는데. 원인은 — 그 의존 bean의 @PostConstruct가 아직 실행되지 않았기 때문이다. 생성자에서 같은 의존성을 호출했다면 더 일찍, 더 기이하게 터졌을 것이다.이런 문제는 생명주기(lifecycle) 없이는 풀 수 없다. bean이 인스턴스화에서 소멸까지 거치는 단계 — 생성자 → 의존성 주입 → @PostConstruct → BeanPostProcessor 후처리 → 사용 → @PreDestroy — 의 어느 시점에 무엇이 보장되고 무엇이 보장되지 않는지를 알아야, "왜 여기서..

    · 댓글
  4. Backend Development/Spring

    Spring - 01. IoC DI

    new를 직접 부르는 코드가 테스트하기 어려운 이유 — IoC와 DI가 해결하는 문제// Spring 없는 세계public class OrderService { private final PaymentGateway gateway = new StripePaymentGateway(); // 직접 생성 private final MailSender mailer = new SmtpMailSender(); // 직접 생성 public void process(Order order) { gateway.charge(order.getTotal()); mailer.send(order.getCustomerEmail(), "주문 완료"); }}이 코드는 ..

    · 댓글