1. 마이크로서비스에 대해 설명해보세요.

 

하나의 어플리케이션을 이루는 서비스들을 기능 단위로 쪼개서 구축하는 것을 말합니다.

 

기존의 모놀로식 아키텍처의 문제점은, 하나의 서비스에 트래픽이 몰리면 그 쪽만 확장하면 되는데 이 단위 별로의 확장이 불가능하고, 일부 서비스의 오류가 전체 서비스에 영향을 준다는 것이었습니다.

 

마이크로 서비스를 채택하면, 일부 서비스가 장애가 있으면 해당 서비스만 내려가고, 나머지엔 영향이 없으며 시즌별로 트래픽이 몰리는 서비스쪽만 확장이 가능하다는 장점이 있습니다.

그리고 각 서비스마다 더 적절한 언어나 기술을 사용할 수 있다는 점도 있습니다.

 

단점은 모놀로식 아키텍처에 비해 구축 난이도, 개발 및 테스트가 어렵다는 단점이 있습니다.

 

1. Stomp가 뭔가요?

Stomp는 Simple Text Oriented Messaging Protocol의 약자로,

Websocket 위에서 동작하는 텍스트 기반 메세징 프로토콜입니다.

 

Stomp는 Publish-Subscribe 매커니즘을 제공합니다.

Broker를 통해 다른 사용자들에게 메시지를 보내거나 서버가 특정 작업을 수행하도록 메세지를 보낼 수 있습니다.

 

 

 

2. WebSocket 대신 Stomp를 사용하는 이유가 뭔가요?

각 커넥션마다 WebSocketHandler를 구현하는 것보다 Controller Annotation이 적용된 객체를 이용해 조직적으로 관리를 할 수 있습니다. ( 메세지를 Controller 객체의 MessageMapping Annotation으로 라우팅시킬 수 있습니다. )

 

Stomp의 Destination(URI 경로)를 기반으로 Spring Security를 적용해 메세지를 보호할 수 있습니다.

 

 

 

 

정리

Stomp는 Websocket 위에서 동작하는 텍스트 기반의 메세지 전송 프로토콜입니다.

메세지를 Controller 어노테이션이 적용된 객체를 이용해 조직적으로 관리할 수 있으며 Spring Security를 적용해 메세지를 보호할 수 있습니다.

 

 

 


 

간단하게만 정리해보았는데 좀 더 자세하게 알아야 할 것 같습니다 ㅠ 추후에 정리 한번 다시 하겠습니다

 

참조:

https://velog.io/@koseungbin/WebSocket#stomp

 

1. CORS에 대해서 설명해보세요.

 

CORS란, (= Cross Origin Resource Sharing )

서로 다른 도메인간에 자원을 공유하는 것을 의미하며 기본적으로 차단되어있습니다.

 

Origin이란 출처를 의미하며 Protocol + Host + Port 를 합친 것을 말합니다.

Origin이 같으면 CORS 에러는 발생하지 않습니다.

 

개발자 도구를 키고 location.origin을 치면 해당 사이트의 origin을 확인할 수 있습니다. https(443), http(80) 포트는 생략가능합니다.

 

예를 들어 아래 개발 환경은 포트가 다르기때문에, Origin이 다른 것으로 판단되어 자원 요청 시 CORS 에러가 발생합니다.

http://localhost:8080

http://localhost:8000 

 

 

2. CORS 에러 해결 방법은 뭔가요?

 

서버에서 응답 헤더에 특정 헤더를 포함하는 방식으로 해결할 수 있습니다.

Access-Control-Allow-Origin: 특정 브라우저가 리소스에 접근이 가능하도록 허용합니다.

Access-Control-Allow-Method: 특정 HTTP Method만 리소스에 접근이 가능하도록 허용합니다.

Access-Control-Expose-Headers: 자바스크립트에서 헤더에 접근할 수 있도록 허용합니다.

credentials: 쿠키 등의 인증 정보를 전달할 수 있습니다.

 

 

 

 

# 정리

CORS란 서로 다른 Origin간에 자원을 공유하는 것을 말하며 기본적으로 브라우저간에 차단되어있습니다.

Origin이란 출처를 말하며, Protocol + Host + Port 를 합친 것을 의미합니다.

CORS 에러는 서버에서 응답 헤더에 특정 헤더를 포함하는 방식으로 해결할 수 있습니다.

예를 들어 Access-Control-Allow-Origin을 통해 특정 브라우저가 리소스에 접근이 가능하도록 허용할 수 있습니다.

 

감사합니다.

 

 

참조:

https://beomy.github.io/tech/browser/cors/

+ Recent posts