본문 바로가기
반응형

Java42

RabbitMQ 이번 글은 저번 메시지 큐(Message Queue) 훑어보기에 이어 Spring Boot 에서 RabbitMQ를 활용한 예제에 대한 글입니다. 1. 어떻게 RabbitMQ를 접하게 되었는가..? 2. 왜 RabbitMQ인가? 3. 설치 과정 4. 개념 정리 5. 예제 1. 어떻게 RabbitMQ를 접하게 되었는가..? 이번에 사내 프로젝트를 진행하면서, 많은 데이터 처리가 웹서버만으로 힘들기 때문에 여러 방법을 구상 중 이였습니다. 앞단에 로드밸런싱을 해볼까? 서버사이드에 분산은 되겠지만, DB가 버텨줄지 의문이였습니다. 기존 시스템 또한 DB가 말썽이였기 때문입니다. 또한 DB 사이드에 session을 무한정 늘릴 수도 없습니다. 그래서 선택하게 된 것이 메시지큐입니다. 이미 몇 년전부터 많은 기업에.. 2019. 9. 20.
메시지 큐(Message Queue) 개념과 원리 웹 서버를 구성하게 되면 성능에 대한 고려는 빼먹을 수 없습니다. 데이터 처리를 하다보면 너무 많은 처리로 인해 대기하는 요청이 쌓이게 됩니다. 그리곤 서버의 성능이 저하되는데, 최악의 경우에는 서버가 다운되는 상황까지 직면하게 됩니다. (많이 안타까운 상황이죠...ㅠ) 이런 상황을 방지하기 위해 서버사이드에서는 로드밸런싱도 하고, DB사이드에서는 H/A, A/A 방식으로 구성도 하고 합니다. 하지만 여러가지 측면에서 볼 때, 비용도 많이 들고 DB사이드에서의 구성은 쉽지도 않습니다. 또한 DB 접속에 대한 한계도 있기 때문에 다른 방법을 택하게 될지도 모릅니다. 그래서 그나마 빠르고 좀 더 원활한 서비스(?)를 위해 비동기 메시지 처리 방식을 구성하게 됩니다. 간단하게 메시지큐를 설명하기에 앞서 그와 .. 2019. 9. 20.
JVM이란? ## 1. JVM이란? JVM은 물리적 머신을 소프트웨어 구현한 Java 프로그램을 실행할 수 있게 해주는 추상컴퓨팅 시스템입니다. Java는 WORA(Write Once Run Anywhere)의 철학을 위해 VM을 개발하였습니다. JVM은 OS에 상관없이 어느 환경에서도 Java가 실행이 가능토록 만들어 준 것입니다. Java를 컴파일 언어로서 실행하기 위해서는 컴파일을 거쳐야 합니다. Java 컴파일러는 .java 파일을 .class 파일로 컴파일 합니다. 이는 .java 파일을 Java byte code로 변환하여 .class 만드는 것입니다. Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행이 되지 않습니다. 이를 해결하기 위해 JVM을 통해 .class 파일을 로드/해석하여 Jav.. 2019. 9. 19.
JAVA의 Stack과 Heap의 이해를 통해 Java의 메모리 관리 # [Java/Stack/Heap] JAVA의 Stack과 Heap의 이해를 통해 Java의 메모리 관리 ## 1. 배경. C언어를 하시던 선임께서 Python의 Stack과 Heap의 메모리 할당을 정확히 모르겠다는 얘기를 들으면서 정작 이와 관련한 Java에 대한 필수 정보가 부족하다는 사실을 알게되면서 조사를 시작했다. Software는 Hardware와 결국 관련이 깊을 수 박에 없다. 그리고 현재까지 컴퓨터는 무어의 법칙에 의거하여 하나의 CPU 속도가 빨라지는 것이 아니라, 컴퓨터에 들어가는 코어의 개수를 늘려 속도가 빨라지게 하였으나 한계를 맞이하고 있다. 이를 해결하기 위해 최근에 읽은 '7가지 동시성 모델'이란 책의 저자는 멀티 코어의 위기를 벗어나기 위한 소프트웨어 동시성 기술이 필요하.. 2019. 9. 19.
반응형