본문 바로가기

전체 글27

Spring Data MongoDB Tailable Cursors (MongoDB 테일러 커서) Introduction Spring Data MongoDB의 맞춤식 커서를 활용해 MongoDB를 infinite(무한한) data stream으로 사용하는 방법에 대해서 알아보겠습니다. Tailable Cursors 쿼리를 실행할 때, db driver는 커서를 열어 일치하는 documents를 제공합니다. 기본적으로, MongoDB는 클라이언트가 모든 결과를 읽었을 때 자동으로 커서를 닫습니다. 따라서 변환하면 finite(유한한) data stream이 생성됩니다. 그러나 계속 열린상태인 맞춤식 커서(tailable cursor)가 있는 제한 크기 컬렉션(capped collections)을 사용하여 무한 데이터 스트림을 만들 수 있습니다. 클라이언트가 처음에 반환된 데이터를 모두 소비한 후에도, .. 2021. 1. 11.
[Clean Code] 10장. 클래스 Intro 2021년 새해를 맞이한 첫 포스트다. 요 며칠 계속 클린코드에 대한 포스팅을 미뤘는데, 솔직히 말하면 12월 한달동안 조금 게으르고 노는 것에 좀 더 치중했던 것 같다. (*자기반성..) 그래서 스터디를 위해 책은 읽어도 블로그에 읽은 내용을 정리하는 시간을 계속 미뤄왔다. 다시 마음을 잡을 겸, 이번 주차에 대한 내용을 정리할 겸 다시 클린코드와 관련된 포스트를 진행하고자 한다. 10장 이전의 아직 올리지 못한 포스트는 최대한 빨리 정리해 올려야지... (게으른 자의 삶이란..) Overview 10장 이전까지는 코드 행과 코드 블록, 함수에 초점을 맞춰 클린코드에 대한 설명이 되어있었다. 코드의 표현력과 함수에 대해서 깨끗한 코드를 유지하는 것도 중요하지만, 그것보다 조금 더 고차원인 클.. 2021. 1. 3.
가비지컬렉션 (Garbage Collection) 가비지 컬렉션이란? Heap 메모리를 재활용하기 위해 참조되지 않는 Object들을 해제해서 가용 공간을 만드는 작업을 가비지 컬렉션(Garbage Collection, GC)이라고 합니다. 쉽게 말해 메모리가 부족할 때마다 쓰레기인 가비지를 정리해주는 프로그램을 말합니다. 가비지 컬렉션이라는 용어를 들어봤다면, 가비지 콜렉터(Garbage Collector)라는 용어도 쉽게 들어보셨을 것입니다. 여기서 가비지 컬렉션과 가비지 콜렉터에 대해서 어떤 차이가 있는지 궁금해 하실 수 있다고 생각이 되는데요. 가비지 컬렉션(Garbage Collection)은 메모리 해제하는 작업을 뜻한다면, 가비지 콜렉터(Garbage Collector)는 JAVA에서의 해제 작업 담당하는 것을 말합니다. 즉, 가비지 콜렉터.. 2020. 12. 29.
JVM (Java Virtual Machine) JVM은 Java Byte Code를 실행할 수 있는 주체로, OS에 맞게 해석해주는 역할을 한다 JVM 이 중요한 이유? 메모리를 효율적으로 사용하여 성능을 높이기 위해서는 JVM의 메모리 구조를 반드시 알아야한다. JVM의 주요 기능 Byte Code는 JVM 위에서 OS 종류 상관없이 실행 프로그램 메모리를 관리하고 최적화 (Garbage Collection) Java 프로그램의 실행 과정 프로그램이 실행되면 JVM은 OS로 부터 프로그램이 필요로 하는 메모리를 할당 받는다 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리 java 컴파일러(javac)가 java 소스코드(.java)를 읽어들여 java 바이트 코드(.class)로 변환시킨다. Class loader를 통해 바이트 코드들.. 2020. 12. 28.
컨테이너(Container)와 도커 (Docker) 컨테이너에 대해서 알아보기 전에 가상화를 보고 오자 컨테이너 이전의 가상화 일반적으로 쉽게 사용한 가상화기술로 가상머신(Virtual Machine)이 있다. 가상머신은 운영체제 인스턴스 하나를 구획화(Compartmentalizing)가 필요한 애플리케이션 각가에 할당하는 방식으로 '분리'를 제공한다. 따라서 거의 완전히 환경을 분리시킬 수 있는 방법이지만, 상당한 비용이 수반된다. 각 운영 인스턴스가 앱 자체에 상당한 메모리와 CPU 파워를 소비하고 있기 때문이다. 컨테이너 (Container) 애플리케이션과 애플리케이션을 구동하는 환경을 격리하는 공간을 뜻하며, 호스트 OS의 커널을 공유하면서 격리된 컴퓨팅 자원을 제공하는 가상화 기술 가상 머신(VM)은 하드웨어 스택을 가상화하지만, 컨테이너는 운.. 2020. 12. 28.
Cloud Computing, 특징, 서비스 유형, 배치 모델 Cloud 컴퓨팅과 특징, 서비스 유형(IaaS/Paas/Saas), 배치 모델 등에 대해서 알아보겠습니다. 클라우드 컴퓨팅 (Cloud Computing) 클라우드(인터넷)을 통해 가상화된 컴퓨터의 시스템 리소스를 요구하는 즉시 제공하는 것 쉽게 말해 서버, 스토리지, DB, 네트워크, 애플리케이션, 서비스 등의 자원이 필요할 때 인터넷을 통해 서비스 형태로 제공받아 이용하는 형식 아마존 AWS, 구글 GCP, 마이크로소프트 Azure 등 장점 유연한 IT 인프라 관리: IT인프라를 실시간으로 자유롭게 조정 가능 신속한 인프라 도입: IT인프라 도입에 들어가는 시간을 절감 예상치 못한 트래픽 폭주 대응: 트래픽이 폭주할 경우 이것에 맞춰 재빨리 인프라를 늘릴 수 있음 클라우드 서비스 유형 IaaS: I.. 2020. 12. 20.