이 글은 우아한 테크 세미나 [테크 리더 3인이 말하는 "개발자 원칙"]의 인프랩 테크리더 이동욱 님의 세미나를 듣고 작성한 글입니다. 일정은 지키지만 버그가 많은 것 vs 일정은 못 지키지만 버그가 없는 것 보통은 이 고민에 대해서 정답을 내리지 못하는 경우가 많다. 프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다. - 나카지마 사토시 프로덕트의 엔지니어의 일은 고객이 원하는 기능을 고객이 원하는 시점에 전달하는 것이다. 그럼 일정이 퀄리티 보다 중요하다는 걸까? 그건 아니다. 결국 프로덕트 엔지니어가 쌓아야할 역량 중에 가장 중요한 것은 아무리 급해도 항상 80~90점짜리 소프트웨어를 일정 내 개발할 수 있는 방법이다. 일정을 항상 잘 지키는 분들의 ..
AMQP란? AMQP(Advanced Message Queing Protocol)는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜이다. 흔히 알고 있는 MQ의 오픈소스에 기반한 표준 프로토콜을 의미한다. 등장 배경 이전에도 상용화된 MQ 제품들은 많았지만, 한 가지 문제가 있다면 대부분 플랫폼 종속적인 제품들이었기 때문에 서로 다른 이기종간에 메시지를 교환하기 위해서는 메시지 포맷 컨버전을 위한 메시지 브리지를 이용하거나 (속도 저하 발생) 시스템 자체를 통일시켜야 하는 불편함과 비효율성이 있었다. 이러한 기존의 MQ들의 약점을 보완하기 위해 등장한것이 AMQP이다. 즉, AMQP의 목적은 서로 다른 시스템간에 최대한 효율적인 방법으로 메시지를 교환하기 위한 MQ 프로토콜인 것이다. 벤더에..
들어가며 프로젝트를 진행하면서 프론트엔드 개발자분들이 API가 안 돼요!! 하지만 프론트엔드와 백엔드 코드 모두 문제가 없어 보이는 경우가 이따금 있었다. 에러문을 자세히 보면 localhost에서 해당 링크에 접근하는데 CORS policy에 의해 blocked 되었다고 나온다. 여기서 CORS란 무엇이고 어떤 이유로 우리를 이렇게 고생시키는 걸까? CORS란? CORS는 함축 단어로 풀어보면 Cross-Origin Resource Sharing이라는 단어로 이루어져 있다. 이 문작을 직역 하면 "교차 출처 리소스 공유 정책"이라고 해석할 수 있는데, 여기서 교차 출처라고 하는 것은 (엇갈린) 다른 출처를 의미한다. 여기서 출처란 어떤 것을 의미하는지 간단하게 살펴보자 출처(Origin)란? 우리는 어..
들어가며 Spring Cloud Gateway를 공부하던 중 SCG는 Spring webFlux로 동작한다는 사실을 알게 되었다. 그럼 Spring webFlux가 뭐지? Spring webFlux는 Spring 5에서 새롭게 추가된 모듈로 client, server에서 reactive 스타일의 어플리케이션 개발을 도와주는 모듈이라고 한다. non-blocking에 reactive stream을 지원하며 Spring MVC의 Tomcat과 달리 Netty를 사용한다고 한다. Netty의 공식홈페이지에 가면 다음과 같이 설명하고있다. Netty는 유지 관리 가능한 고성능 프로토콜 서버 및 클라이언트의 신속한 개발을 위한 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크입니다. 비동기(async), non..