분류 전체보기
-
`@Volatile` 이해하기프로그래밍 언어/Kotlin 2025. 12. 31. 16:05
@Volatileprivate var something: Something 동료분이 해당 코드에 리뷰를 해주었다. @Volatile 은 ThreadLocal 에 저장하는 키워드로 알고 있는데, Webflux + 코루틴 환경에서 문제가 없을까요? @Volatile 은 CPU 캐시가 아닌 메인 메모리를 보게하는 명령어라고만 알고 있었다.문제가 없어보이지만 혹시 내가 아는게 다르지 않을까 싶어 여러 문서를 뒤져보고 알게 된 지식을 정리하고자 한다.# VolatileCPU 캐시는 ThreadLocal(JVM Heap 에 저장되는 자료구조) 에 저장되는 값이 아닌 OS 의 CPU Core 에 저장되는 캐시이다.@Volatile 키워드는 메모리 모델 상의 happens-before 관계만 정의한다. 즉, JVM..
-
gRPC Unary 와 REST API 속도 차이 (1) - 직렬화, 역직렬화Back End/gRPC 2025. 7. 17. 10:13
직렬화 포맷 (Protocol Buffers vs JSON)조금만 검색해보아도 gRPC 는 데이터 직렬화를 바이너리로 하니 더 빠르다는 정보를 찾을 수 있다.JSON 도 직렬화하면 바이너리로 변환되는데 무슨 차이점이 있을까?그래서, 정확히 어떤 방식으로 데이터가 직렬화 되기에 페이로드가 짧아지는지 알아보자.JSON 직렬화JSON 문자열을 바이너리로 바꾼다는 건, 해당 문자열을 UTF-8 바이트 시퀀스로 변환하는 것을 말한다.{ "name": "Alice", "age": 30} 위 데이터를 바이트 시퀀스(16진수)로 직렬화하면 7b 22 6e 61 6d 65 22 3a 22 41 6c 69 63 65 22 2c 22 61 67 65 22 3a 33 30 7d 총 25 bytes JSON 문자열바이트{7..
-
[Network] DHCP 에 대해 정말 간략히 알아보자Network Basis 2025. 1. 26. 19:35
DHCP(Dynamic Host Configuration Protocol)네트워크에 연결된 장치(클라이언트)에게 자동으로 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 등 네트워크 설정 정보를 할당하는 프로토콜 과거에는 IP를 고정적으로 수동할당하였다. IP 충돌이나 고갈을 해결하기 위하여 나온 자동할당 프로토콜이다. DHCP 서버DHCP 서버는 주로 라우터에 위치한다. 경우에 따라 전용 DHCP 서버를 개설하여 관리할 수 있다.
-
[Network] ARP 와 RARP (MAC 주소가 필요한 이유)Network Basis 2025. 1. 26. 19:28
들어가기 전에 IP 주소MAC 주소정의네트워크 상에서 논리적 식별자하드웨어 네트워크 인터페이스의 물리적 주소OSI 계층3계층 (네트워크 계층)패킷 전달을 위해 사용2계층 (데이터 링크 계층)프레임 전송을 위해 사용목적전 세계, 인터넷 통신로컬 네트워크 내부 통신변경 여부네트워크에 따라 변경 가능기본적으로 변경 불가능 (제조 시 할당)할당 방식정적 또는 동적 (DHCP)하드웨어에서 자동 할당역할장치의 논리적 위치 식별로컬 네트워크 내 데이터 전송 식별 개요 ARP 와 RARPNDP정의IP 주소와 MAC 주소(장치의 물리적 주소)를 상호 변환하는 데 사용되는 프로토콜사용범위IPv4 네트워크IPv6 네트워크 IP 로만 데이터를 전송할 수는 없나? MAC 주소를 왜 꼭 알아야하는가?대부분의 네트워크 장치는 ..
-
[Network] 전달한 패킷이 네트워크 장치가 수용할 수 있는 크기보다 크다면? (MTU, MSS, PMTUD)Network Basis 2025. 1. 18. 20:23
들어가기전에OSI 7 Layer 의 2계층인 Data Link Layer 에서는 Ethernet 프로토콜을 사용한다. 네트워크 장치들이 모두 OSI 7계층 모델을 사용하는 것은 아니지만, 네트워크 통신을 수행하는 장치들은 OSI 모델의 계층 중 일부를 사용하거나 참고한다. LAN(Local Area Network)을 구성하기 위해 네트워크 카드(NIC), 스위치, 라우터, 허브, 액세스 포인트 등과 같은 네트워크 장치가 사용되는데, 이러한 네트워크 장치를 통하여 데이터가 전달된다. 우리는 전송할 데이터를 쪼개어 전송하게 되는데 쪼개어진 데이터를 *패킷이라고 칭하며, 일반적으로 패킷의 크기가 클수록 대역폭(Bandwidth)을 효과적으로 사용할 수 있다. 난 효율적인게 좋아!우리집 인터넷은 1Gbps ..
-
[Network] 노드와 네트워크 장치, 링크와 회선Network Basis 2025. 1. 17. 17:53
1. 노드 (Node)정의:데이터를 생성하거나 소비하는 장치예시:클라이언트 노드: 컴퓨터, 스마트폰, IoT 기기 등서버 노드: 웹 서버, 데이터베이스 서버기타 노드: 네트워크 프린터, NAS(Network Attached Storage), IoT 센서특징:일반적으로 데이터의 생성 또는 최종 소비를 담당사용자가 직접 상호작용하는 장치가 많음 2. 네트워크 장비 (Network Device)정의:노드 간의 데이터 흐름을 관리하고 최적화하는 데 사용되는 장치자체적으로 데이터를 생성하거나 소비하지는 않지만, 데이터를 전달하거나 처리하는 데 중요한 역할을 수행예시:스위치(Switch): LAN(Local Area Network)에서 데이터를 전달라우터(Router): 서로 다른 네트워크 간 데이터 전송을 관리허..
-
[Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)Back End/Spring Framework 2024. 12. 1. 21:36
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프developer-ping9.tistory.com Spring DB 트랜잭션의 롤백 유무에 대해 정리하다가 프록시 객체가 언제 생성되는지, 어떤 원리로 만들어지는지 고찰을 하기 위해 여러 실험을 진행해보았다. 다른 블로그 글을 읽어도 이해가 잘안되고, 블로그마다 말이 좀 다른게 있어 쉽게 믿을 수가 없었다. 무엇보다 제일 궁금했던 점은 프록시가 나의 서비스클래스를 상속받아서 만들어지는지,..
-
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우Back End/Spring Framework 2024. 11. 27. 18:44
배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프링은 개발자가 인지한 예외에 대해서는 기본적으로 롤백을 진행하지 않는다.예외가 발생한 메서드의 Propagation 레벨이 Required(default) 가 아니면 부모트랜잭션은 롤백되지 않는다.프록시가 Self invocation 을 시도할 경우 경우에 따라 트랜잭션이 롤백되지 않을 수 있다. [Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)[Spring] 예외 발생시 Spring DB 트..