Programming

    [MQ] RabbitMQ 미러링(Mirroring)

    이 글을 이해하기 위해서는 RabbitMQ 클러스터링에 대한 이해가 먼저 필요합니다. 혹시 아직 RabbitMQ 클러스터링에 대해 잘 모르신다면 여기를 먼저 보고와주세요! RabbitMQ 클러스터의 한계 RabbitMQ 클러스터는 "Queue를 제외"한 모든 정보를 모든 노드가 공유한다고 했던것을 기억하시나요? 따라서 결국 모든 클러스터에는 하나의 Unique한 Queue만 존재합니다. 따라서 만약 하나의 노드가 Fail 하는 경우, 다른 노드와 connection을 맺어서 클러스터와의 연결을 유지할 수는 있지만 해당 노드에 속해있던 Queue에 저장된 Message는 유실이 됩니다. 따라서 이같은 Message 유실을 최소화하기 위해 나온 기법이 바로 Queue Mirroring 입니다. Queue 미..

    [MQ] RabbitMQ 클러스터링(Clustering)

    혹시 RabbitMQ에 대한 이해가 필요하시다면 여기를 먼저 보고와주세요! RabbitMQ 클러스터링이란? 다수의 RabbitMQ 노드(RabbitMQ가 설치된 서버)를 마치 하나의 RabbitMQ를 사용하는 것처럼 사용할 수 있는 기법입니다. 위 그림처럼 클러스터에 노드가 3개 존재한다면 어떤 노드에 연결해도 나머지 두 개 노드의 RabbitMQ에 접근할 수 있습니다. 어떻게 그게 가능한가요? 클러스터에 구성된 RabbitMQ들은 Queue를 제외한 모든 정보와 상태값이 공유됩니다*. 예시로 Exchange 같은 경우 클러스터내에 있는 모든 RabbitMQ에 동일하게 존재합니다. 따라서 하나의 노드에만 connection이 맺어져있어도 노드가 queue를 보유하고있는지 상관없이 원하는 Exchange를..

    [클라우드] 오픈스택(OpenStack) 이란?

    OpenStack이란? OpenStack은 IaaS 형태의 프라이빗/퍼블릭 클라우드 구축을 위한 오픈소스 플랫폼(오픈소스 소프트웨어 프로젝트의 집합)입니다. NASA와 Rackspace가 진행하던 프로젝트가 2010년에 오픈소스화된것이며 현재는 OpenStack 재단에서 운영되고 있습니다. 현재 클라우드 인프라를 구축할 수 있는 가장 거대한 오픈소스 프로젝트이고 6개월에 한번씩 새로운 버전을 릴리즈(버전 확인)하고 있습니다. 왜 만들어진건가요? 클라우드 컴퓨팅에 사용되는 서버를 구축하고 제어하려면 하드웨어와 운영체제에 대한 전문적인 지식이 필요합니다. 당연히 하드웨어와 운영체제에는 많은 종류가 있기 때문에 환경이 바뀔때마다 새롭게 지식을 습득하고 적용해야하는 문제가 생깁니다. 그래서 서버의 하드웨어와 운..

    [MQ] RabbitMQ 란?

    RabbitMQ는 쉽고 간편하면서 AMQP를 구현한 오픈소스 메시지 브로커(Message Broker) 입니다. 메시지 브로커(Message Broker)란? 메시지 브로커는 sender application이 발송한 메시지를 receiver application에게 전달해주는 툴입니다. 메시지 브로커는 메시지를 전달하면 메시지를 보관하지 않고 삭제합니다. AMQP(Advanced Message Queuing Protocol)란? 메시지 지향 미들웨어를 위한 표준 응용 계층 프로토콜입니다. 탄생 배경은 AMQP이전에 상용화된 MQ는 플랫폼에 종속적인 경우가 많았었기 때문에 다른 이기종간에 메시지를 교환하기 위해서는 메시지 브릿지를 사용하거나 (성능 저하 이슈), 시스템 자체를 통일 시켜야하는 (대공사) ..

    [보안] SHA 암호화 알고리즘

    오늘은 SHA 암호화에 대해서 알아보겠습니다. 아마 로그인, 회원가입등의 개인정보를 저장하거나 처리할때 많이 들어보셨을 것 같습니다. 자 지금부터 알아볼까요? SHA란? SHA는 Secure Hash Algorithm의 줄임말입니다. 따라서 해석하면 해시를 이용한 암호화 알고리즘이라고 보시면 됩니다. SHA의 종류는 크게, sha-0, sha-1, sha-2로 나뉩니다. 당연하게도 숫자가 높아질수록 더 높은 버전이며, sha-0은 최초의 sha 함수를 뜻하고, 여러 변형을 거쳐서 sha-1 그리고 현재는 sha-224, sha-256, sha-384, sha-512를 아우르는 sha-2까지 등장했습니다. sha-0, sha-1은 160비트의 해시값을 만들어내는 방식이고, 특히 sha-1은 SSL, TLS..

    [Kafka] 카프카(Apache Kafka)란?

    아파치 카프카(Apache Kafka)는 간단하게 카프카라고도 불리며, 실시간으로 처리할 데이터가 많은 현대의 서비스에서 자주 사용되는 기술인 것 같습니다. 아마 한번쯤 이름은 들어보셨을 것 같아요. 자 그럼 바로 한번 알아볼까요?! 카프카(Kafka)란? 카프카는 링크드인(LinkedIn)에서 처음 개발된 분산 메시징 시스템입니다! 네 우리가 아는 그 인맥 소셜 네트워크 서비스입니다! 왜 개발이 되었나요? 링크드인은 소셜 네트워크 서비스이다보니 서비스 특성상 많은 데이터의 생성/적재가 필요했습니다. 따라서 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타겟 애플리케이션이 연결되는 파이프라인이 필요했습니다. 초기운영시에는 단방향 통신을 통해 파이프라인을 연동했고 그렇게 복잡하지 않았지만....

    [k8s] 쿠버네티스(kubernates, k8s)란?

    아마 이름은 많이 들어보셨을거같아요. 제가 처음에 들었을 때는 굉장히 세련되보이면서 엄청나게 어려울것같은 이름이라는 생각이 들었습니다. 저도 궁금해서 여러번 찾아보았지만, 아직도 정확히 내부에서 무슨일이 일어나는지 소스코드까지는 감히 이해하지 못했습니다 ㅠㅡㅜ 오늘은 그래서 엄청 깊은 코드레벨의 지식보다는, 쿠버네티스가 무엇이고 왜 탄생하게되었는지 얕고 넓은 개념으로 알아보도록 하겠습니다. 쿠버네티스에 대해 설명하려면, 반드시 먼저 알아야하는 개념이 있습니다. 바로 컨테이너 오케스트레이션 인데요. 왜냐면 쿠버네티스는 컨테이너 오케스트레이션의 한 종류이자 가장 표준같은 존재이기 때문입니다. 자 바로 알아볼까요? 컨테이너 오케스트레이션 지난시간에 이 글에서 도커를 이용한 컨테이너 가상화에 대해서 알아보았었습..

    [기술] 가상화(Virtualization)란?

    가상화(Virtualization)란? 하나의 물리적 서버에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술입니다. 여러분은 만약 이런 상황에서 어떻게 하실건가요? 내부가 파란색인 락커와 빨간색인 락커가 있습니다. 그리고 물건이 여러가지가 있는데 파란물건은 내부가 파란색일때만 들어갈 수 있고 빨간물건도 내부가 빨간색일때만 들어갈 수 있습니다. 현재 빨간색 락커는 꽉찼는데 파란색 락커는 20%정도 밖에 안찼네요. 이런.. 빨간색 물건을 더 넣어야하는데.. 새로운 빨간색 락커를 빌려야할까요..? 파란색 락커를 반으로 나누고 반만 내부를 빨간색으로 칠해버리면 안될까요? 비유가 와닿을지는 모르겠지만... ㅠㅡㅜ 이게 바로 가상화(Virtualization)가 각광받기 시작한 이유입니다. ..

    [Docker] 도커(Docker)란? 도커의 역사

    도커(Docker)~~~ Java, Spring 등의 기존 기술들에 비하면 상대적으로 최신기술이라고 볼 수 있는데요. 직접 사용해보지 않으셨더라도 한번쯤 이름은 들어보셨을 것 같아요. 그럼 오늘은 도커에 대해 알아보겠습니다~! 도커의 탄생 도커는 2013년 3월 산타클라라에서 열린 PyCon에서 Solomon Hykes가 "리눅스 컨테이너의 미래(The Future of Linux Container)" 라는 제목으로 세션을 발표하면서 알려지게 되었습니다. Solomon Hykes는 dotCloud라는 PaaS 기업의 창시자였고 사내 프로젝트였던 도커를 공개적으로 발표를 한것이었죠. 발표 이후 도커는 엄청난 인기를 얻게 되었습니다. 그 후 2013년 10월에 회사명 자체를 Docker Inc로 바꾸고 20..

    [보안] CORS 란? CORS 에러란?

    프론트엔드 개발을 하다보면 무심코 브라우저단에서 백엔드 서버에 요청을하다가 한번쯤 CORS 에러를 마주해보셨을 것 같습니다. 위 사진처럼 console에 뜨게되는데요. 처음 마주하면 아니 나는 정상적으로 요청했는데?! postman으로 호출하면 잘 호출되던데?! 왜 너는 허락을 안해주는거니?? 하는 마음이 들게됩니다 ㅠㅠ 자 오늘은 이 CORS 에러에 대해 간단하게 알아봅시다 CORS란? CORS는 Cross Origin Resource Sharing의 약자인데 직역하면 서로 다른 도메인간에 자원을 공유하는 것을 의미하며 기본적으로 브라우저에서 차단되어있습니다. 왜 차단시켜요..? 브라우저는 사실 공격에 굉장이 취약합니다. 누군가 의도적으로 악의적인 자바스크립트를 웹사이트에 심어놓는다면, Client의 ..