새로운 포스트
-
Kotlin
[Kotlin] 코틀린 제대로 활용하기 1편 - 위임 프로퍼티: by 키워드로 lazy부터 맵 위임까지 이해하기
-
Kotlin
[Kotlin] 코틀린 온보딩 11편 - 널이 될 수 있는 값: null 안전성 한 번에 정리하기
-
Kotlin
[Kotlin] 코틀린 온보딩 10편 - object와 companion object: 싱글톤부터 value class까지 이해하기
-
Kotlin
[Kotlin] 코틀린 온보딩 9편 - 생성자: 정의와 초기화를 한 번에 이해하기
-
Kotlin
[Kotlin] 코틀린 온보딩 8편 - 클래스 계층 구조: 인터페이스부터 sealed class까지 한눈에 정리하기
-
Kotlin
[Kotlin] 코틀린 온보딩 7편 - 확장 함수: 바이트코드로 확장 프로퍼티까지 이해하기
-
Kotlin
[Kotlin] 코틀린 온보딩 6편 - 함수 호출: 이름 있는 인자부터 infix까지 이해하기
-
Kotlin
[Kotlin] 코틀린 온보딩 5편 - 루프와 예외 처리: for/while과 try-catch
다른 사람들이 관심있어한 포스트
-
Techfork [26/01/28] 오늘의 개발 일지 - 웹 Apple 소셜 로그인 구현 오늘은 웹에서 Apple 소셜 로그인을 할 수 있도록 REST API 문서를 보고 구현했습니다. 애플 로그인은 카카오 로그인보다 훨씬 까다롭더군요...https://developer.apple.com/documentation/signinwithapplerestapi Sign in with Apple REST API | Apple Developer DocumentationCommunicate between your app servers and Apple’s authentication servers.developer.apple.com 웹 Apple 로그인 구현 가이드TechFork 프로젝트의 Spring Security OAuth2 기반 Apple 소셜 로그인 구현⚠️ Apple vs Kakao 핵심 차이.. -
Istio [Istio] 1편: 서비스 메시(Service Mesh)를 제대로 이해하기 - 문제부터 Istio까지 MSA(마이크로서비스 아키텍처)를 클라우드에서 운영하다 보면 자연스럽게 "서비스 메시"라는 개념을 마주치게 됩니다. 그런데 "왜 필요한가"를 건너뛰고 "Istio 쓰는 법"부터 접하면 개념이 붕 뜬 채로 남기 쉽습니다. 이번 글에서는 문제 → 초기 해결 방식의 한계 → 사이드카 패턴의 등장 → 서비스 메시 → Istio라는 구현체까지, 등장 배경 순서대로 정리해봅니다. 1. 클라우드 네이티브 MSA가 마주치는 문제들모놀리식 아키텍처에서는 함수 호출이 프로세스 내부에서 끝났습니다. 하지만 서비스가 여러 개로 쪼개지고 네트워크 너머로 호출이 오가기 시작하면서, 예전엔 신경 쓸 필요 없었던 문제들이 새로 생겨납니다.문제왜 생기는가신뢰할 수 없는 네트워크프로세스 내 함수 호출이 네트워크 호출로 바뀌면서 타임아웃..
-
DDD [DDD] 바운디드 컨텍스트 매핑 패턴 - OHS/PL과 ACL 중심으로 1. BC 간 통합 패턴 전체 목록Bounded Context 간 통합 방식을 결정하는 것이 컨텍스트 매핑(Context Mapping)입니다.IDDD(Implementing Domain-Driven Design)에서는 다음과 같은 패턴들을 제시합니다.각 패턴은 두 BC 사이의 팀 관계와 기술적 통합 방식을 함께 표현합니다. 패턴 핵심Upstream/Downstream파트너십 (Partnership)두 팀이 대등하게 협력, 함께 일정 조율없음 (대등)공유 커널 (Shared Kernel)일부 도메인 모델을 두 BC가 공유없음 (공유)고객-공급자 (Customer-Supplier)Upstream이 Downstream 요구사항을 수용U/D 있음순응주의자 (Conformist)Downstream이 Upstre..
-
JVM [JVM] CDS와 AppCDS - JVM이 클래스 로딩을 캐싱하는 방법 JVM 인터널 시리즈이전 글에서 ClassLoader가 .class 파일을 찾아 InstanceKlass로 변환하는 과정을 살펴봤습니다.이번 글은 그 연장선입니다. JVM이 매번 같은 작업을 반복하지 않도록 결과를 캐싱하는 방법, Class Data Sharing(CDS) 을 다룹니다. 1. 왜 JVM 시작이 느린가?java -jar app.jar를 실행하는 순간, JVM은 애플리케이션이 첫 번째 요청을 처리하기 전까지 상당한 양의 작업을 수행합니다. 전형적인 Spring Boot 애플리케이션은 완전히 초기화되기까지 15,000~25,000개의 클래스를 로드합니다. 각 클래스는 아래의 단계를 거칩니다.Loading : .class 파일 탐색 → 바이트코드 읽기/파싱 → InstanceKlass 생성 ..
-
Java [Java] volatile 키워드 완전 정리 - JMM부터 하드웨어 동작까지 1. Java Memory Model(JMM)과 메모리 구조Java에서 멀티스레드 프로그래밍을 이해하려면 먼저 JMM이 정의하는 메모리 구조를 알아야 한다.JMM은 메인 메모리(Main Memory) 와 작업 메모리(Working Memory) 라는 두 가지 논리적 영역을 정의한다.메인 메모리: 모든 스레드가 공유하는 영역. 인스턴스 변수, 클래스 변수 등 공유 데이터가 저장된다.작업 메모리: 각 스레드가 독립적으로 가지는 영역. 메인 메모리의 값을 복사해서 사용한다.각 스레드는 메인 메모리에 직접 접근하지 않고, 자신의 작업 메모리에 복사된 값을 읽고 쓴다. 그리고 필요한 시점에 메인 메모리와 동기화한다. 여기서 핵심은, 작업 메모리는 논리적 개념이라는 것이다. 실제 하드웨어에서는 CPU 레지스터와 캐..