분류 전체보기 73

맥미니로 홈 서버 구축하기

안녕하세요 오개발입니다. 클라우드 비용이 부담(?) 되어서 집에 홈 서버를 구축하기로 하기로 하였습니다. 1. 이더넷 연결 와이파이 말고 이더넷 연결 2. 내부 IP 고정 (DHCP 고정 할당) 공유기 관리자 페이지에 접속상태정보 > DHCP할당정보 확인 후 DHCP 고정 할당 설정→ 맥미니의 내부 IP를 고정해줌 해당부분 참고 링크 3. NAT 설정 (포트포워딩)공유기 설정에서 NAT 설정 또는 포트포워딩 설정 메뉴 진입22번 포트 (SSH용 포트) 활성화→ 외부에서 내부 맥미니에 SSH 접속 가능하게 함 4. 맥미니 설정설정 > 일반 > 공유 > 원격 로그인 활성화→ SSH 접속을 허용함'i' 버튼을 누르면 내부 IP가 보이지만, 외부에서는 공인 IP로 접속해야 함 작성된 아이피는 ..

일상 및 생각 2025.07.05

[kafka] Node -1 disconnected.

Kafka Consumer Group 충돌로 인한 비정상 동작 원인 분석 및 해결개발 중 Kafka 기반 시스템을 테스트하다가, 예상치 못한 이슈를 겪었습니다.바로 Consumer가 정상적으로 실행되지 않는 문제였는데요, 겉으로 보기엔 오류가 없었고, 로그 레벨도 INFO여서 단순한 상태 정보처럼 보였습니다.그런데 실제 테스트 결과, Consumer가 메시지를 수신하지 못하고 있는 상황이었습니다. 현상Kafka Consumer가 동작하지 않음로그에는 특별한 ERROR 없이 INFO 수준의 로그만 출력됨Producer는 정상적으로 메시지를 전송하고 있음삽질기(?)해결을 위해 아래와 같은 방법들을 시도해봤습니다.개발 서버에서 Telnet 테스트→ Kafka 브로커와 통신은 정상 (포트도 열려있고 연결 가능)..

DevOps 2025.06.25

Java volatile

java에서 volatile 키워드는 스레드들 사이에서 변수에 저장된 값을 변경하는 것에 대한 가시성을 보장합니다 여기서 가시성이란 최신 상태를 유지 하고 변경된 값을 즉시 읽을수 있도록 보장한다는 말이다.     Using Cache in Multi CPUPermalink여러 개의 CPU를 사용하는 멀티 스레드 환경에서 데이터 동기화 문제가 발생합니다.각 CPU들이 각자의 스레드를 실행합니다.어플리케이션의 같은 변수를 사용하지만, CPU 캐시에 데이터를 로딩해서 사용합니다.   1.1. Data not matched between main memory and cpu cachePermalinkCPU1은 Thread1을 실행합니다.CPU2는 Thread2를 실행합니다.CPU1은 Thread1을 수행하면서 ..

Java 2024.11.15

CompletableFuture에 대해서

CompletableFuture는 Java 8에서 도입된 비동기 프로그래밍을 위한 클래스입니다. 이 클래스는 비동기 작업을 수행하고 그 결과를 비동기적으로 처리할 수 있는 메커니즘을 제공합니다. 기존의 Future 인터페이스의 단점을 보완하여, 비동기 작업의 결과를 쉽게 조합하고 체이닝(Chaining)할 수 있도록 설계되었습니다.  [ Future의 단점 및 한계 ]CompletableFuture가 갖는 작업의 종류는 크게 다음과 같이 구분할 수 있는데, 이에 대해서는 자세히 코드로 살펴보도록 하자.비동기 작업 실행작업 콜백작업 조합예외 처리   비동기 작업 실행runAsync반환값이 없는 경우비동기로 작업 실행 콜supplyAsync반환값이 있는 경우비동기로 작업 실행 콜  runAsync는 반환 값..

Java 2024.11.15

Java에서 dead lock이란 무엇인가요?

데드락이란? 멀티 스레드 환경에서 일어날수 있는 현상이다. 동기화를 통해 락을 획득하여 동일한 자원을 여러 곳에서 함부로 사용하지 못하도록 한다.하지만 두 개의 스레드에서 서로 락이 해제 되길 기다리는 상태가 생길수 있으면 이 내용을 교착상태(deadlock) 이라고 합니다.   DeakLock 발생 조건상호 배제 (Mutual Exclusion) :  한 자원에 대해 여러 쓰레드 동시 접근 불가점유와 대기 (Hold and Wait) : 자원을 가지고 있는 상태에서 다른 쓰레드가 사용하고 있는 자원 반납을 기다리는 것비선점 (Non Preemptive) : 다른 쓰레드의 자원을 실행 중간에 강제로 가져올 수 없음환형대기 (Circle Wait) : 각 쓰레드가 순환적으로 다음 쓰레드가 요구하는 자원을 ..

Java 2024.11.14

ThreadLocal vs synchronized 차이점

멀티 스레드 환경에서 동시성 이슈는 자주 일어난다. 자바에서 synchronized 와 약간 비슷한 공통점도 있지만 성격 자체가 다르다. 공통점은 동시성 관련 내용을 해결해주지만 동작 방식이 완전 다르다. 1. synchronizedsynchronized는 객체 공유를 제어 하는 역할이다.여러 스레드가 동일한 객체를 접근할때 블로킹을 통해 안전성을 보장한다.동기화 비용이 있어서 블로킹으로 인해 성능 저하가 있을수도 있습니다. 2. ThreadLocalThreadLocal는 각 독립적인 스레드의 값을 가지게 한다. 스레드 마다 고유의 값을 보장한다.각 스레드에 고유의 값을 저장한다.동기화를 신경 쓸일 없어서 성능적으로 높지만 메모리 소모가 많을수도 있다. 동시성 문제 해결 측면에서의 차이synchroniz..

Java 2024.11.12

Monitor

모니터란? mutual exclusion(상호 배제) – 하나의 스레드만이 특정한 시점에 메서드를 실행할 수 있습니다. locks기법을 사용합니다.cooperation – 특정 조건이 충족될 때까지 스레드를 대기시키는 기능. wait-set을 사용합니다.해당 기능은 모니터라고 하는 이유는 모니터는 스레드 리소스에 어떻게 접근 하는지 모니터링 하기 때문입니다. 모니터의 특징모니터는 동시성 프로그래밍에 세 가지 주요 기능을 제공합니다:한 번에 하나의 스레드만 critical code section에 mutually exclusive(상호 배제적)으로 접근할 수 있습니다.모니터에서 실행 중인 스레드가 특정 조건이 충족될 때까지 차단될 수 있습니다.스레드는 조건이 충족될 때 다른 스레드에 알릴 수 있습니다.  ..

Java 2024.11.12

Context switching

안녕하세요 오개발입니다. 공부하는 도중 Context switching이란 무엇인가 한번 공부를 해봤습니다.내가 이해 하는 내용으로 보자면 먼저 영어 자체의 해석으로 이해 하였다. 먼저 Context란 (동작, 작업들의 집합)을 (정의, 관리, 실행)하도록 하는 (최소한의 상태, 재료, 속성)을 포함하는 (객체, 구조체, 정보)이다. 다시 말해 Process의 경우 현재 프로세스가 중단 되었을 때, 중단된 시점 부터 다시 프로세스를 실행하기 위한 정보를 Context라고 부른다여기서 다시 말해 멀티 프로세스 개념이 나오는걸로 알고 있다.  Context Switching이란?작업의 주체가 현재 Context를 잠시 중단하고 다른 Context를 실행하는 것을 Context Switching이라 한다.  ..

DevOps 2024.11.12

에프랩(F-Lab) Java Backend 1개월 후기

국비지원 출신으로 처음 개발을 시작하였다. 판교에서 6개월 동안 자바 백엔드 국비지원 학원을 다녔고, 어찌어찌해서 첫 회사에 입사를 하였다, 입사해보니, Java언어가 아닌 PHP 개발을 하였다 거기서부터 나의 커리어는 PHP 개발자로 입문하였다. PHP 개발자들이 주변에 많이 있었다 하지만 다들 나이 때가 정말 많았다. 젊은 나이에 PHP 잘하시는 사람도 했던 분들도 잘 없다고 오히려 강점이라고 하였다 그 덕분인지 모를까 외주 개발 대부분 PHP로 개발을 하여 성공적으로 끝났다. 첫 회사에서 2년을 지나서 바로 쉽게 이직할 수 있었다. 무려 연봉도 직전 연봉에 +1000만원을 올려서 이직을 했다. 주변에서 이직할 때 쫌 쉬면서 이직하라고 했지만 금요일 퇴사후 바로 그 다음주 입사를 하였다. 조건과 규모..

일상 및 생각 2024.11.11