Back
ESSAY
DEC 14, 2025

EP181: Java의 동작 원리

원문: EP181: How Java Works


이번 주 시스템 설계 복습 주제:

  • Java의 동작 원리
  • Gitflow Branching은 어떻게 동작하는가?
  • AI 엔지니어 되기 | 실습으로 배우기 | 코호트 기반 강좌
  • Redis Query의 생명주기
  • 새로운 AI 모델을 만드는 6단계

Java의 동작 원리

Java 동작 원리

Java 프로그램을 실행할 때 내부에서 어떤 일이 일어나는지 궁금하셨나요? 함께 알아봅시다:

Java (JVM Runtime):

  • Java 소스 코드(.java)는 javac를 사용해 .class bytecode로 컴파일됩니다.
  • Class Loader가 bytecode를 Java Runtime Environment(JVM)에 로드합니다.
  • Bytecode가 검증되고 실행됩니다.
  • JVM은 Interpreter와 JIT Compiler를 모두 사용하며, 자주 사용되는 코드(hot path)는 native machine code로 변환되어 Java의 실행 속도를 높입니다.

질문: 대규모 시스템에서 여전히 Java를 기본 언어로 보시나요?


Gitflow Branching은 어떻게 동작하는가?

Gitflow branching 전략은 feature, release, hotfix, main production 라인에 대해 각각 전용 branch를 두어 개발을 체계적으로 정리하는 Git 워크플로우입니다. 정기적으로 버전 배포를 하는 프로젝트에 이상적인 Git branching 전략입니다.

Gitflow Branching

동작 방식은 다음과 같습니다:

  1. 개발은 develop branch에서 시작하며, 여기에 새로운 feature들이 통합됩니다.
  2. 각 feature branch는 develop에서 생성되고, feature 완료 시 다시 merge됩니다.
  3. release 준비 시, 최종 버그 수정을 위해 develop에서 release branch를 생성합니다.
  4. Release branch는 main(production용)에 merge되고, 일관된 히스토리 유지를 위해 develop에도 다시 merge됩니다.
  5. 긴급 수정이 필요한 경우, main에서 직접 hotfix branch를 생성한 후 main과 develop 모두에 merge합니다.

질문: 프로젝트에서 어떤 Git branching 전략을 따르고 계신가요?


Redis Query의 생명주기

Redis Query

Redis는 in-memory 데이터베이스로, 속도를 위해 모든 데이터가 RAM에 상주합니다. 하지만 서버가 crash되거나 재시작되면 데이터가 손실될 수 있습니다. 이 문제를 해결하기 위해 Redis는 디스크에 데이터를 기록하는 두 가지 persistence 메커니즘을 제공합니다:

AOF (Append-Only File)

클라이언트가 command를 보내면, Redis는 먼저 메모리(RAM)에서 이를 실행합니다. 그 후 Redis는 디스크의 AOF 파일에 command를 append하여 로그를 남깁니다. 이를 통해 모든 operation을 나중에 replay하여 dataset을 재구성할 수 있습니다. command가 먼저 실행되고 그 후에 로그가 남기 때문에, write 작업은 non-blocking입니다. 복구 프로세스는 event log를 사용해 기록된 command들을 replay합니다.

RDB (Redis Database)

모든 command를 기록하는 대신, Redis는 주기적으로 전체 dataset의 snapshot을 찍을 수 있습니다.

main thread가 subprocess(bgsave)를 fork하며, 이 subprocess는 main thread의 모든 in-memory 데이터를 공유합니다. bgsave subprocess는 main thread로부터 데이터를 읽어 RDB 파일에 기록합니다.

Redis는 copy-on-write를 사용합니다. main thread가 데이터를 수정할 때 데이터의 복사본이 생성되고, 프로세스는 그 복사본에서 작업하므로 write가 block되지 않습니다. 그런 다음 snapshot이 디스크에 RDB 파일로 기록되어, 필요할 때 Redis가 빠르게 메모리로 snapshot을 reload할 수 있습니다.

Mixed Approach

production 환경에서 Redis는 종종 AOF와 RDB를 모두 사용합니다. RDB는 compact한 snapshot으로 빠른 reload를 제공합니다. AOF는 마지막 snapshot 이후의 모든 operation을 기록하여 durability를 보장합니다.

질문: 프로젝트에서 Redis를 사용해 보셨나요?


새로운 AI 모델을 만드는 6단계

AI Model 6 Steps

  1. 목표 설정: use case를 식별하고, 실현 가능성을 확인하며, 성공을 위한 명확한 KPI를 설정하여 AI 모델이 해결할 문제를 정의합니다.

  2. 데이터 준비: raw 데이터를 수집하고 정제하며, 유용한 feature를 엔지니어링하고, 데이터를 training, validation, test set으로 분할합니다.

  3. 알고리즘 선택: 문제에 맞는 올바른 알고리즘을 선택하고 framework(예: TensorFlow, PyTorch, Sci-kit Learn)를 선정합니다.

  4. 모델 학습: 모델에 데이터를 입력하고, training을 반복하며, 성능이 개선될 때까지 hyperparameter를 튜닝합니다.

  5. 모델 평가 및 테스트: unseen data로 테스트하고, performance metric을 분석하며, bias나 불공정한 결과가 있는지 확인합니다.

  6. 모델 배포: deployment 전략을 선택하고, API를 구축하며, production 사용을 위해 모델을 containerize합니다.

질문: 이 목록에 어떤 단계를 추가하고 싶으신가요?

Thank you for reading.

Based in Seoul
Since 2024