[Java] JVM 메모리 구조와 Spring Bean 생명주기 완벽 이해하기
자바 코드는 컴퓨터가 바로 실행하지 않는다. JVM이라는 프로그램이 컴파일된 코드를 읽어 실행하고, 그동안 객체를 어디에 둘지, 언제 치울지도 JVM이 정한다. Spring으로 만든 서버도 결국 JVM 위에서 돈다.
자바 코드는 컴퓨터가 바로 실행하지 않는다. JVM이라는 프로그램이 컴파일된 코드를 읽어 실행하고, 그동안 객체를 어디에 둘지, 언제 치울지도 JVM이 정한다. Spring으로 만든 서버도 결국 JVM 위에서 돈다.
Spring Boot로 REST API를 개발하다 보면 같은 고민이 반복된다.
Jenkinsfile은 Jenkins Pipeline(코드가 올라온 뒤 빌드·테스트·배포까지 거치는 자동화된 작업 순서)을 코드로 정의하는 파일이다. 프로젝트 저장소의 루트 디렉토리(그 프로젝트의 가장 바깥 폴더)에 두고, 빌드, 테스트, 배포 같은 자동화 작업을 Groovy(자바...
비즈니스 로직이 복잡해 지면서 Service 레이어(서비스 계층과 같은 말)의 코드가 복잡해지기 시작했다. 특히 DTO를 VO로 변환할 때 문제가 두드러졌다. 해당 문제는 로직의 가독성을 크게 떨어뜨렸다. DTO를 왜 VO로 바꿔 쓰는지는 이 글이 다루지 않는다. 이 글은 「바꾸기...
여러 사람이 같은 코드를 함께 고치다 보면 누가 언제 무엇을 왜 바꿨는지 금방 뒤섞인다. 이걸 기록하고 관리해 주는 프로그램을 버전 관리 시스템이라고 부른다. Git은 그중 가장 널리 쓰이는 분산 버전 관리 시스템으로(「분산」은 기록을 서버 한 곳에만 두지 않고, 저장소를 받아 간...