이현석의 블로그

공부한 것을 정리하는 공간

메인페이지

  • WAL(Write-Ahead Logging)?

    “Real MySQL 8.0” 스터디를 진행하던 중 WAL(Write-Ahead Logging)이라는 개념이 언급되었고, 이에 대해 더 깊이 공부할 필요성을 느껴 이 글을 작성하게 되었다. WAL은 데이터베이스의 성능과 안정성을 모두 고려할 때 매우 중요한 개념이다. 데이터가 실제 디스크에 기록되기 전에 로그를 먼저 기록하는 방식을 통해, 시스템 장애가 발생하더라도 데이터의 무결성을 보장할 수 있다. 이러한 특성 덕분에 복구 과정에서 효율적인…

  • Argument Resolver?

    요청이 컨트롤러로 들어올 때, 요청에 포함된 값들(Json 등)을 바탕으로 원하는 객체를 만들어내는 작업을 Spring이 ArgumentResolver를 통해 자동으로 처리해줄 수 있다. 그런데 이 ArgumentResolver가 도대체 무엇이길래 그런 일을 할 수 있을까? 또, 이를 통해 무엇을 할 수 있기 때문에 Spring이 이 기능을 지원하는지 알아보자. 실제로 Kicketing 프로젝트에서 사용했던 로직이다. 요청에 포함된 값으로 객체를 생성하는 과정을 ArgumentResolver가…

  • proxy? load balancer?

    프록시란 ‘대리’ 라는 의미를 갖고 있으며, 서버와 서버사이의 중계기 역할을 한다 프록시 서버란? 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 캐시/보안/트래픽 분산 등 여러 장점을 가질 수 있음 프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라 Forward Proxy와 Reverse Proxy 로 나뉘게 된다. 보통 일반적으로 말하는 Proxy는 Forward Proxy에 해당함 Forward Proxy?…

  • Docker

    도커란? 도커는 컨테이너 기반 가상화를 활용하여 애플리케이션을 보다 쉽게 배포하고 관리할 수 있도록 도와주는 플랫폼입니다. 도커를 제대로 이해하기 위해서는 먼저 컨테이너와 가상화가 무엇인지 알아보는 것이 중요합니다. 왜 가상화가 등장했을까요? 하나의 서버(비싼 서버)에서 한 가지 프로젝트만 실행하면 문제가 없겠지만, 하나의 서버에서 두 가지 또는 세 가지 서비스를 운영하게 될 경우, 각 서비스에서 사용하는 모듈이나 라이브러리가 다를…

  • serialize? Deserialize?

    직렬화(serialize)란? 자바 시스템 내부에서 사용되는 객체나 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 변환하는 기술이다. 이렇게 변환된 데이터는 파일로 저장하거나 네트워크로 전송하여 다른 시스템에서도 사용할 수 있게 된다. 반대 되는 개념인 역직렬화(Deserialize)란? 직렬화된 데이터를 다시 객체로 복원하는 과정이다. 직렬화된 데이터를 다시 읽어서, 원래의 객체 상태로 돌려놓는 것이다. 직렬화의 종류 직렬화의 종류는 다양한데 CSV,…

  • GC(Garbage Collector) 알아보기

    GC(Garbage Collector) GC란 자바 애플리케이션에서 사용하지 않는 메모리를 자동으로 수거하는 기능을 말한다. C/C++ 같은 언어는 메모리를 할당하고 직접 해제해야했지만, 자바에서는 GC를 이용하여 개발자들이 메모리 관리를 비교적 신경쓰지 않아도 된다. GC가 필요한 이유? 프로그램이 동적으로 할당했던 메모리 영역(= Heap Area) 중 필요 없게된 영역(= 어떤 변수도 가르키지 않음)을 알아서 해제해준다. 장점 → 개발자의 실수를 막아줌 단점 → 실시간성이…

  • JVM 공부하기

    JVM JVM이란, Java Virtual Machine의 약자로서, 직역하면 자바를 실행하는 머신입니다. JVM을 사용하면 자바 프로그램을 모든 플랫폼에서 제약 없이 동작할 수 있습니다. JVM을 이해하기 위해서 어떻게 자바 코드가 실행되는지 먼저 알아보겠습니다. 자바는 C언어와 함께 대표적인 컴파일 언어입니다. 여기서 말하는 컴파일(Compile)이란, 우리가 작성한 코드를 컴퓨터가 이해할 수 있는 과정으로 바꾸는 일종의 번역 과정입니다. 우리가 동작시키는 자바 프로그램들은…