Language53 [Node.js] 멀티코어 전략과 비동기 모델의 진화 Java 개발자가 Node.js를 파헤치다 — Week 2: 멀티코어 전략과 비동기 모델의 진화Week 1에서 Node.js의 싱글스레드 + 이벤트 루프 모델을 이해했다. 이번 주에는 "싱글스레드의 한계를 어떻게 극복하는가"를 다룬다. Worker Threads, Cluster 모듈로 Node.js가 멀티코어를 활용하는 방법을 살펴보고, Java 진영의 Spring WebFlux와 Virtual Threads까지 비교하며 두 생태계의 비동기 모델이 어떻게 진화해왔는지 정리한다.1. Worker Threads — Node.js도 멀티스레드가 된다싱글스레드의 치명적 약점: CPU-boundWeek 1에서 Node.js의 싱글스레드 모델이 I/O-bound 작업에 효율적이라고 했다. 하지만 CPU를 많이 쓰는.. Language/JS(Node.js) 2026. 3. 5. [Node.js] 비동기 프로그래밍 깊게 파기: Promise부터 동시성 제어까지 [Node.js] 비동기 프로그래밍 깊게 파기: Promise부터 동시성 제어까지1. Promise의 내부 상태와 에러 전파의 원리Promise는 단순한 콜백 헬 해결사가 아닙니다. 이는 비동기 작업의 상태를 관리하는 객체입니다.3가지 상태: Pending, Fulfilled, Rejected. 한 번 결정된 상태는 바뀌지 않습니다(Immutability).에러 버블링: .then() 체인 내부에서 발생한 에러는 중간에 .catch()가 없다면 계속 뒤로 전파됩니다.Unhandled Rejection: 최신 Node.js 환경에서는 .catch()하지 않은 에러가 발생하면 프로세스가 종료될 수 있습니다. 반드시 최종 단계에서 예외 처리가 필요합니다.2. async/await: 문법적 설탕 그 이상의 가치.. Language/JS(Node.js) 2026. 3. 2. [Node.js] 동시성 모델의 모든 것 Spring/Java 환경에서 일하다가 NestJS/Node.js를 병행하게 되면서, 그동안 "그냥 되니까" 넘어갔던 Node.js의 내부 동작 원리를 제대로 공부하기로 했다. Week 1에서는 Java와 Node.js의 동시성 모델 차이, 이벤트 루프의 실체, 그리고 실무에서 주의할 점까지 정리한다.1. 두 세계의 출발점: 요청을 어떻게 처리할 것인가웹 서버의 본질은 간단하다. 요청이 들어오면 처리하고 응답한다. 문제는 요청이 동시에 수천 개씩 들어올 때다. Java와 Node.js는 이 문제를 완전히 다른 방식으로 풀었다.Java: Thread-per-RequestJava의 전통적인 방식(Spring MVC + Tomcat)은 요청 하나당 스레드 하나를 할당한다.Client A ──→ [Thread-.. Language/JS(Node.js) 2026. 3. 2. npm i (npm install)와 npm ci (npm clean-install) npm ci와 npm i는 모두 Node.js 프로젝트의 의존성 패키지를 설치하는 명령어이지만, 사용 목적과 동작 방식에 명확한 차이가 있습니다. 결론부터 말하면, 개발 환경에서는 npm i를, 배포나 협업 환경에서는 npm ci를 사용하는 것이 일반적입니다.주요 차이점구분npm i (npm install)npm ci (npm clean-install)기준 파일package.jsonpackage-lock.jsonpackage-lock.json의존성 변경 시 업데이트수정하지 않음 (불일치 시 오류)node_modules기존 폴더에 추가/변경항상 기존 폴더를 삭제 후 새로 설치속도상대적으로 느릴 수 있음일반적으로 더 빠름주요 용도개발 중 새로운 패키지 추가/업데이트CI/CD 파이프라인, 팀원 간 동일 환경 .. Language/JS(Node.js) 2025. 9. 23. [Java] Stream API 톺아보기 서론오늘은 함수형 프로그래밍을 가능하게 해주는 util 클래스인 Stream에 대해서 알아보겠습니다.이 글에서는 간단한 원리와 활용 방법에 관해 다루고 있음을 미리 말씀드립니다.본론정의스트림(Stream)은 개울이란 뜻인데, 이는 데이터의 흐름을 만들도록 돕는 역할을 합니다. 주로 컬렉션 형태로 구성된 데이터를 람다(참조)를 이용해 간결하고 직관적으로 프로세스 할 수 있게 돕습니다. 뿐만 아니라, 배열이나 파일에 저장된 데이터도 스트림으로 제어할 수 있습니다.장점1) 코드가 간결하다.스트림이 나오기 이전에는 아래와 같이, for문과 Iterator를 이용하여 코드를 작성해야 했습니다.String[] strArr = {"a", "b", "c"};List strList = Arrays.asList(strAr.. Language/Java & Kotlin 2025. 6. 3. [Java] 모듈 결합도와 응집도, SRP와 OCP 원칙 오늘은 모듈 결합도와 응집도 개념과 객체 지향 프로그래밍의 5가지 원칙인 SOLID 중에서도 SRP와 OCP 원칙에 간략하게 알아보겠습니다.SOLID 원칙우리가 SOLID를 알아야 하는 이유먼저, SOLID은 객체 지향 프로그래밍 원칙입니다. 설계 원칙을 모른다고 자바 프로그래밍을 할 수 없는 것은 아닙니다. 충분히 자바 프로그래머로서 일을 할 수 있습니다. 그럼에도 우리가 이를 학습해야 하는 이유는 무엇일까요?결론부터 말씀 드리면, SOLID 원칙은 객체 지향 프로그랭을 할 때 발생될 수 있는 문제들을 해결하기 위한 검증된 프로그래밍 방법론이기 때문입니다. 비록 이러한 문제들을 직접 마주한 경험이 없더라도, SOLID 원칙을 학습하면서 개발하며 발생할 수 있는 문제에 대해 미리 알게 되고 그에 대한 해.. Language/Java & Kotlin 2025. 6. 3. [Java] JVM의 동작 원리 (부제 : Java를 처음 공부하는 당신에게) Java의 탄생 배경Java는 1991년 썬 마이크로시스템즈(이하 썬)의 제임스 고슬링과 아서 밴 호프를 주축으로 한 엔지니어들이 플랫폼으로부터 독립적으로 실행 가능하도록 개발한 언어입니다. 참고로 여기서 플랫폼이란 운영체제와 CPU 아키텍처를 말합니다. 대표적으로 Windows, Linux, Mac 그리고 x86과 핸드폰에 주로 쓰이는 arm이 있습니다. 이해를 높이기 위해서, 잠시 91년도로 돌아가볼까요? 90년대 초는 C와 C++ 의 사용률이 높았던 시절입니다. 그들은 왜 당시 핫했던 C나 C++를 사용하지 않았을까요? 객체지향 프로그래밍을 하려면 C++로도 가능했지만, C++는 플랫폼에 따라 컴파일러에 차이가 있어 플랫폼 간 실행파일의 호환성이 보장되지 않았습니다. 이는 인터넷의 발전으로 다양한 .. Language/Java & Kotlin 2025. 1. 18. [Kotlin] 자주 쓰이는 코틀린 문법 정리 1. 코틀린 스코프함수 (apply, run, with, let) letlet 함수는 수신 객체(it)를 인자로 받아 블록 내부에서 처리한 후, 결과를 반환합니다.fun main() { val name: String? = "Kotlin" val length = name?.let { println("Name is $it") it.length } println("Length of name is $length")}applyapply 함수는 객체 초기화 시 주로 사용되며, 객체 자신을 반환합니다. 블록 내부에서는 객체를 this로 참조합니다.class Person { var name: String = "" var age: Int = 0 var address: String = "" override fun toS.. Language/Java & Kotlin 2024. 8. 23. [Kotlin] 코루틴(Coroutines) 기초에 대해 알아보자 (1) suspend [Language/Java] - [Kotlin] 자바와 코틀린의 공통점과 차이점[Language/Java] - [Kotlin] 코루틴(Coroutines)에 대해서 알아보자이전 글을 통해 코루틴에 대해 알아보았습니다. 이번에는 코루틴 기초에 대해서 자세하게 알아보도록 하겠습니다.suspend 함수와 일반 함수의 차이점먼저 suspend fun으로 선언되는 일시 중단 함수는 함수 내에 일시 중단 지점을 포함할 수 있는 특별한 함수입니다. 코루틴은 특정 시점에서 작업을 일시 중단하고, 다른 코루틴을 실행하도록 허용한 후 나중에 해당 작업을 재개할 수 있습니다. 일시 중단 함수는 코루틴에서 실행되는 일시 중단 지점이 포함된 코드들을 재사용할 수 있는 코드의 집합으로 만드는 역할을 합니다.import kotli.. Language/Java & Kotlin 2024. 6. 15. [Kotlin] 코루틴(Coroutines)에 대해서 알아보자 [Language/Java] - [Kotlin] 자바와 코틀린의 공통점과 차이점블로그엔 자주 안올렸지만 요새 코틀린 공부를 열심히 하고 있습니다. 지난번에는 자바와 코틀린의 공통점과 차이점에 대해서 알아보았습니다. 기본 문법은 자바스크립트와 문법적으로 유사한 부분이 있어, 금방 이해되는 부분이 많았지만 코루틴부터는 제대로 공부하지 않으면 안될 것 같아, 블로그에 열심히 정리하도록 하겠습니다.공식 라이브러리Kotlin CoroutinesKotlin SerializationKotlin Lincheck먼저, 코루틴을 사용하려면 별도의 라이브러리를 설치해야 합니다. (아래 버전은 예시입니다)implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1".. Language/Java & Kotlin 2024. 6. 14. [Java] 여러 개의 Java 버전이 설치되어 있을 때, Java 버전을 자동으로 변경하는 방법 여러 개의 Java 버전이 설치되어 있을 때, Java 버전을 자동으로 변경하는 방법 중 하나는 SDKMAN을 사용하는 것입니다.방법 1: SDKMANSDKMAN은 여러 버전의 SDK(Software Development Kit)를 관리하는 도구입니다. 다음은 SDKMAN을 사용하는 방법입니다.상세 링크는 다음과 같습니다. https://sdkman.io/SDKMAN 설치curl -s "https://get.sdkman.io" | bash설치 가능한 자바 버젼 검색sdk list javaSDKMAN을 통해 Java 설치: SDKMAN을 사용하여 여러 Java 버전을 설치할 수 있습니다. 예를 들어, Java 21과 Java 17을 설치하려면 다음 명령어를 사용합니다:sdk install java 21-o.. Language/Java & Kotlin 2024. 6. 4. [Kotlin] 자바와 코틀린의 공통점과 차이점 오늘의 질문자바와 코틀린의 공통점과 차이점요약공통점: JVM에서 실행, 객체 지향 프로그래밍, 풍부한 표준 라이브러리, 안드로이드 개발, 비동기 프로그래밍 지원.차이점: 언어의 간결성, null 안정성, 확장 함수, 코루틴, 데이터 클래스.적용할 점데이터 클래스 관련 : 앞으로 DTO는 Record로 만들어 불필요한 롬복 어노테이션을 제거해보자.공통점JVM에서 실행: 두 언어 모두 JVM에서 실행되어, 동일한 바이트코드로 컴파일됩니다. 이는 자바와 코틀린 코드를 동일한 프로젝트에서 사용할 수 있게 해줍니다.객체 지향 프로그래밍 지원: 두 언어 모두 객체 지향 프로그래밍 패러다임을 지원하며, 클래스, 상속, 인터페이스 등을 사용할 수 있습니다.풍부한 표준 라이브러리: 자바와 코틀린 모두 광범위한 표준 라이.. Language/Java & Kotlin 2024. 5. 26. 이전 1 2 3 4 5 다음 반응형