Context Switching & Thread Scheduling
·
⚙️ Ops/CS
📘 Process 구조 운영체제에서 모든 프로그램은 실행을 하면 메모리로 올라와서 프로세스로 올려집니다. 📌 프로세스의 구조 MetaData (PID, Mode, Priority ... 등등) Data(Heap) Files Code MainThread (Stack, Instruction Pointer) Stack은 메모리 영역으로 지역 변수가 저장되고 기능이 실행되는 영역입니다. Instruction Pointer는 스레드가 실행할 다음 명령어 주소의 포인트 역할만 합니다. 프로세스의 Stack, Instruction 부분만 제외하면 나머지 모든 스레드들이 MetaData, Data, Files, Code를 공유합니다. 📘 Context Switching 각각의 어플리케이션과 프로세스는 독립적으로 실행됩..
Intergration Spring Bean & Akka Actor
·
📘 Backend/Spring
📘 Akka Actor Akka Actor는 동시성 모델을 기반으로 하는 어플리케이션 프레임워크 입니다. 이번 진행중인 프로젝트에서, JVM에 여러 Thread가 동시에 작업하는 분산 어플리케이션을 Actor Model을 기반으로 단순화하기 위함과 데이터의 실시간성, 고성능이 요구되는 백엔드 설계를 위해 사용하게 되었습니다. Actor Model의 특징 액터들은 상태를 공유하지 않습니다. 액터들 간의 통신은 메시지 전달을 통해서 이루어 집니다. (이벤트 기반 모델) 액터간의 통신은 비동기로 이루어 집니다. 각 액터는 전달받은 메시지를 큐에 보관하며, 메시지를 순차적으로 처리합니다. 액터는 일종의 경량 프로세서 입니다. Akka 프레임워크는 Scala로 작성되었으므로 Java 기반의 어플리케이션에서 완벽하..
Spring ehCache & DevTools
·
📘 Backend/Spring
📘 Spring ehCache Spring에서 간단하게 사용할 수 있는 Java기반 오픈소스 캐시 라이브러리 입니다. redis나 memcached같은 캐시 엔진들도 있지만, 저 2개의 캐시 엔진과는 달리 ehcache는 Daemon을 가지지 않고 Spring 내부적으로 동작하여 캐싱 처리를 합니다. 따라서 redis같이 별도의 서버를 사용하여 생길 수 있는 네트워크 지연 혹은 단절같은 이슈에서 자유롭고, 같은 로컬 환경 일지라도 별도로 구동하는 memcached와는 다르게 ehcache는 서버 어플리케이션과 라이프사이클을 같이 하므로 사용하기 더욱 간편합니다. Ehcache의 2.x 버전과 3 버전의 차이는 큽니다. 3 버전 부터는 javax.cache API(JSR-107)와의 호환성을 제공합니다. ..
부하테스트 - Event 기반 Data Simulator 개발
·
📘 Backend/기능 개발
보호되어 있는 글입니다.
Redis Publish/Subscribe Pattern (Spring Data Redis)
·
📦 Database/NoSQL
구현 요구사항 딥러닝 엔진에서 MQTT 데이터 전송 클러스터링/데이터 미러링된 RabbitMQ 클러스터 5대 노드에서 각 라우팅 키에 맞게 Exchange -> Routing Key -> Quorum Queue에 메시지들이 쌓이고 Slave Queue에 메시지가 미러링 됩니다. Redis 설치 Backend(Spring Data Redis)에서 미러링 된 Slave Queue에서 데이터를 가져와서 Redis Pub/Sub 채널을 열어줍니다. Spring Redis(Backend)에서 소켓을 열어줍니다. 소켓의 URL은 WebSocketConfig 클래스에 나온것처럼 ws://localhost:18080/ws입니다. 프론트엔드(React/TypeScript 환경)에서 백엔드의 소켓에 접속해 데이터를 받아옵..