본문 바로가기

전체 글

(25)
Java 기초 개념 요약 정리(2) ※ 틀린 부분이 있을 수 있으며, 피드백은 언제나 환영합니다.서술형(답이 비어 있는 버전) 링크https://docs.google.com/document/d/1PqHQABUqclIfIRmlGmwhG7vktxwldycCqFHjCXzGz9o/edit?usp=sharing Java 기초 개념 요약 정리 2(서술형)버전별 구분 Java : ㅡ 추가: Java : ㅡ 추가: Java : ㅡ 추가: Java : ㅡ 추가: Java : ㅡ 추가: Java : ㅡ 추가: Java : ㅡ 추가: 언어적 특성 Java는 컴파일 언어? 인터프리트 언어? 컴파일 언어(Compiled Language):docs.google.com 버전별 구분Java 8ㄴ 추가: default 메소드, Lambda 표현식, Optional 클래..
Java 21 버전에서 가상 스레드 적용하기 Java 21부터 공식적으로 가상 스레드 개념이 우리 Spring Boot 프로젝트에 들어왔다. 운영 환경에서의 성능이 개선될 수 있다는 하나만 보고 관련해서 많은 공부를 해봤는데, 단순히 spring.threads.virtual.enabled=true로 설정한다고 끝나는 일은 절대 아니다 싶다. 배운 내용을 바탕으로 결론 내린 사항을 아래와 같은 항목으로 정리해 볼 것이니, 여전히 사람이 작성한 게시물로 도움을 받는 사람들에게 조금이나마 보탬이 되기를 바란다. 1. 가상 스레드를 사용하는 건 기존 플랫폼(캐리어) 스레드만 사용하는 것과 어떻게 다른가?2. 가상 스레드를 쓴다고 하면 어떻게 써야 하는가?3. 가상 스레드 기반 모델은 왜 문제가 될 수 있는가?4. 가상 스레드 기반 모델을 쓰기 위해 어떤 ..
데이터 스토리지 솔루션 고르기 (2) 우리가 이전 포스팅에서 설명한 건 메인 DB를 어떤 이유로 선택했는가 하나뿐이다. 이제 나머지를 이야기하겠다(사실 이번 포스팅에서도 다룰 건 딱 한 가지다).https://akdnjs0308.tistory.com/24 데이터 스토리지 솔루션 고르기 (1)사이드 프로젝트를 진행할 때 프로젝트의 상황에 알맞은 데이터 스토리지 솔루션(솔루션으로 축약)을 고르는 건 매우 중요하다. 적절한 솔루션은 우리 프로젝트에서 추구하는 요건에 따라 데이akdnjs0308.tistory.com 그 전에, 이 포스팅 시리즈를 작성하는 의미에 대해 이전 포스팅에서 명쾌하게 전달하지 못한 것 같아 다시 남긴다. 생성형 AI의 보편화로 인해 우리는 어떤 솔루션이 무슨 장단점이 있는지, 솔루션을 어떤 식으로 활용해야 그 이점..
데이터 스토리지 솔루션 고르기 (1) 사이드 프로젝트를 진행할 때 프로젝트의 상황에 알맞은 데이터 스토리지 솔루션(솔루션으로 축약)을 고르는 건 매우 중요하다. 적절한 솔루션은 우리 프로젝트에서 추구하는 요건에 따라 데이터를 저장 및 관리할 수 있게 해 주고, 솔루션 자체적으로 제공하는 기능을 통해 우리 프로젝트에서 적용 중인 기술적인 측면에서 개선을 이뤄낼 수 있도록 한다. 말이 너무 추상적이니, 우리 프로젝트에서 궁극적으로 중요하게 생각하는 바를 먼저 제시하고, 그다음부터 순차적으로 우리가 솔루션으로부터 추구했던 바가 무엇이었는지까지 제시하겠다.결국, 가장 중요한 것은 어떻게 유저를 만족시킬 것이냐에 있다. 필자는 우리 프로젝트에서 애자일 방법론을 채택한 이래로 이와 같은 목적을 지속적으로 강조해왔다. 우리가 하는 일의 목적은 프..
검증을 어디서 할지 정하기 Spring Boot로 개발을 하다 보면 다양한 곳에서 검증을 고려하게 된다. 사용자의 요청을 직접적으로 처리하는 REST 컨트롤러부터 DB와 상호 작용하는 구성 요소까지 그 어디든 우리는 필요에 따라 검증을 강제할 수 있다. 다만 모든 곳에서 검증을 수행할 수는 없다. 우리는 다음과 같은 기준을 삼고 최적의 검증 장소를 결정해야 한다. 1. 무엇을 위한 검증인가?ㄴ 우리는 이 검증이 왜 필요한지를 분명히 말할 수 있어야 한다. 2. 검증이 너무 중복되어 수행되지는 않는가?ㄴ 검증이 필요 이상으로 빈번하게 이뤄진다면 자칫 오버헤드가 될 여지가 있다. 3. 검증은 성능을 고려하여 이뤄지고 있는가?ㄴ 그렇잖아도 수행하는 데 오래 걸리는 구성 요소에 검증을 도입하는 건 좋지 못한 생각일 수 있을 것이다. 4...
레이어 아키텍처에서 클린 아키텍처 + DDD로 리팩토링하기 (2) 이전 포스팅(https://akdnjs0308.tistory.com/18)에서 내용을 이어가 보자. 이 과정에서 집중적으로 고려하던 아키텍처는 총 두 가지였다: 헥사고날 아키텍처와 클린 아키텍처. 이번에도 각각에 대한 일반적인 특징부터 제시해볼까 한다. 필자가 알아보고 이해한 바를 정리한 것이므로 부족하거나 잘못된 부분이 있을 수 있음을 양해 바라며, 일부러 DDD에 관한 내용은 제거하였다(이에 관해서는 후술하겠다):헥사고날 아키텍처(Hexagonal Architecture) 1. 주로 다음과 같은 구성 요소로 이루어진다(가장 안쪽 계층에 위치한 구성 요소 순): 코어, 포트, 어댑터 + 애플리케이션 서비스.- 코어는 도메인으로 볼 수 있고, 포트는 인터페이스, 어댑터는 구현체이다.- 애플리케이션 ..
아키텍처 기초 개념 요약 정리 ※ 틀린 부분이 있을 수 있으며, 피드백은 언제나 환영합니다.서술형(답이 비어 있는 버전) 링크https://docs.google.com/document/d/1Gpvb-RsX4nvBEkVW8FEGruh053kMD7uRD1CKdGfQCv4/edit?usp=sharing프로그래밍 패러다임객체 지향 프로그래밍(Object-Oriented Programming)ㄴ 정의: 데이터(프로퍼티)와 행동(메소드)을 결합하여 객체를 다루는 SW 디자인을 조직하는 프로그래밍 패러다임.ㄴ 핵심 특징:캡슐화(Encapsulation):ㄴ 의미: 프로퍼티와 메소드를 한데 묶고, 접근을 제어한다. ㄴ 이점: 보안을 강화하고, 버그를 줄이며, 유지보수성을 향상한다.상속(Inheritance): ㄴ 의미: 새로운 클래스가 기존 클래스..
JVM 기초 개념 요약 정리 ※ 틀린 부분이 있을 수 있으며, 피드백은 언제나 환영합니다.서술형(답이 비어 있는 버전) 링크https://docs.google.com/document/d/1F0h8rVfLXod2LdtfZset4mREay99TzdWMWtUqyBBkLg/edit?usp=sharingJVM 아키텍처 구성 요소런타임 데이터 영역(Runtime Data Area)ㄴ 스레드를 통한 영역 구분:스레드 간 공유되는 영역: 메소드 영역, 힙 영역스레드간 독립적인 영역: 스택 영역, PC(Program Counter) 레지스터, 네이티브 메소드 스택ㄴ 각 영역에 저장되는 것:메소드 영역: 타입 정보, 필드 정보, 메소드 정보, 런타임 상수 풀, 클래스 변수.힙 영역: 런타임 동안 생성된 객체.스택 영역: 지역 변수, 중간 계산 결과,..