728x90

Server Programming/ETC 5

API & RESTful API

API → Application Programming Interface EX) 가족이 외식하기 위해 식당을 찾아 무엇을 먹을지 메뉴판을 보고 결정하며, 주방에는 주방장이 있다. 이때, 가족은 주방에 직접 가서 무엇을 주문할지 직접 말하기 싫고, 주방장 역시 직접 가서 주문을 받기 싫은 상태일 때 이때, 중간에 주문을 집행 해주는 직원이 API 라고 할 수 있다. 쇼핑몰에서 고객이 원하는 화면을 제공해주기 위해서 요청한 화면을 보여주는 것이라고 보면 된다. API는 중간에서 복잡한 일들을 처리해주는 중요한 역할이다. RESTful API? API 종류들 중 하나 REpresentational State Transfer → 상태의 변화를 주기 위해 그 정보를 서버와 클라이언트에게 공유하고 주고받기 위해 사용..

Apache Kafka 및 메세지 큐 종류와 차이점

메세지 큐의 사용 이유 Application request에 서버가 실시간으로 response 할때 사용 Application 과 서버가 강한 결합일 경우 DB와 백엔드에서 장애발생시 Application 역시 장애발생 MQ 사용시 장점 설계를 보다 느슨한 결합할 수 있음 Application Architecture가 DB성능에 덜 영향을 받음 여러 다른 API로 부터 비동기통신이 가능 다수의 프로세스로부터 Message 처리 가능 메세지큐 종류 Kafka RabbitMQ ActiveMq Kafka 확장성, 고성능 및 높은 처리량 대용량 데이터 특화 시스템으로 범용으론 적합하지 않다. 분산시스템을 설계 → 분산, 복제 구성이 쉽다. 이점 대용량 실시간 로그처리 특화 AMQP 프로토콜이나 JSM API를 ..

RabbitMQ core, exchange

RabbitMQ에서 중요한 개념으로는 Producer, Consumer, Queue, Exchange, Binding이 있습니다. 먼저 Producer는 이름에서 알 수 있듯이, 메세지를 생성하고 발송하는 주체입니다. 이 메세지는 Queue에 저장이 되는데, 주의할 점은 Producer는 Queue에 직접 접근하지 않고, 항상 Exchange를 통해 접근하게 됩니다. 다음으로는, Consumer가 있으며, 메세지를 수신하는 주체입니다. Consumer는 Queue에 직접 접근하여 메세지를 가져옵니다. Queue는 Producer들이 발송한 메세지들이 Consumer가 소비하기 전까지 보관되는 장소입니다. Queue는 이름으로 구분되는데, 같은 이름과 같은 설정으로 Queue를 생성하면 에러 없이 기존 Q..

RabbitMQ Python 예제

메세지 큐를 송신 및 수신하는 Request, Response.py 를 생성하고 하단과 같이 활용한다. Request.py import json import pika import sys cred = pika.PlainCredentials('user', 'pwd') connection = pika.BlockingConnection( pika.ConnectionParameters(host='host_ip',credentials=cred)) channel = connection.channel() channel.exchange_declare(exchange='queue_name')#, exchange_type='fanout') param = { '전달 내용' } message = json.dumps(param)..

동기와 비동기의 개념과 차이점

데이터를 통신하는 방식인 동기식 방식과 비동기식 방식이 존재한다. 동기식 (Synchronous) - 동기식은 동시에 일어나는 뜻이다. 요청과 그 결과가 동시에 일어난다는 말!-> 요청한 결과가 한 자리에서 동시에 일어남-> A노드와 B노드 사이의 트랜잭션을 동시에 맞추겠다는 말임 장점 : 설계가 간단하고 직관적단점 : 결과를 볼 때까지 아무것도 못하고 대기해야함 비동기식(Asynchronous) - 비동기식은 동시에 일어나지 않는다는 뜻이다. 요청과 결과가 동시에 일어나지 않는다는 말!-> 요청한 그 곳에서 결과가 나타나지 않음-> 노드 사이의 작업 처리 단위를 동시에 하지 않아도 된다. 장점 : 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업이 가능해 자원의 효율적인 사용이 가능단점 : ..

728x90
반응형