본문 바로가기

전체 글156

Graphql 현재 회사에서 rest api대신 Graphql을 채택해서 사용하고있다. 써본적 없는 기술이었지만, 빠른 적응을 위해 뚝딱뚝딱했다 6개월정도 써보고 있는데, rest를 마이크로 서비스 환경에서 써본적은 없지만... 클라와 서버와의 커뮤니케이션에서 편하다(?) 라는 느낀점이 있다. 마이크로 서비스니까 서버쪽이어도 다른 서비스에 요청을 해야하니.. 그리고 무지성으로 쓰느라 내부에서 어떻게 동작하는지 모르니 공부해보도록 한다 쿼리 뮤테이션 사용법은 다른 분들이 훨씬 잘 정리해주셨을거라 생각해서 스킵한다. Graphql GraphQL은 API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다. 일반적인 REST API는 여러 URL에서 데이터를 받아와야 하지만 GraphQL AP.. 2021. 12. 14.
Dataloader 최근에 리팩토링을 해야 할 일이 있어서 dataloader를 사용해서 성능 개선을 했다 일단 빠르게 하는게 중요하니 기존에 구현되어있는 코드를 보고 작성해서 반영을 했는데 아직 왜 이게 성능 개선이 되는지에 대해서는 알지 못하기때문에 알아보려고 한다. Dataloader n+1 문제를 해결하기 위한 라이브러리 (n+1 문제에 대한 내용은 추후에 정리해서 올리겠습니다) 주로 Graphql에서 사용되지만 의존성은 없다고 한다. batch와 cache를 활용해서 성능을 개선한다 batching 자바스크립트의 이벤트 루프 한 틱 동안 키 배열을 수집한다 모든 키로 DB를 한 번 때린다 값 배열을 해결하는 프로미스를 반환한다 batch 함수 작성할때 주의할점 값 배열은 키 배열과 길이가 같아야 한다 값 배열의 각.. 2021. 11. 21.
메모리 캐시 관련해서 겪은 일 이번주에 업무 진행하면서 겪은 일이다. 랜덤하게 세팅된 상품 데이터를 메모리에 캐시를 해놨는데, 생각해보니 서버가 여러대 띄워져 있는걸 생각을 못했다. 역시나 결과는, 각 서버별로 세팅된 데이터가 반복해서 나타났다(ex. 서버가 3대면 3개의 패턴으로) 그래서 redis 붙여서 모든 서버에서 동일한 데이터가 나타나게 했다. 대충 그림으로 표현해보자면 이런것이다 1. 맨 왼쪽 그림처럼, 세팅 되어있는 상태에서 2. 응답에서 당연히 다른 결과가 나올 수 밖에 없는 상황 3. 그래서 메모리에 캐시를 안하고 레디스에 해서 해결했다. 2021. 10. 31.
SPOF (단일 실패 지점) Single Point Of Failure - 시스템을 구성하는 요소들 중에 하나의 요소라도 정상적으로 동작하지 않았을 경우, 전체 시스템을 중단시킬 수 있는 포인트를 SPOF라고 부른다. - 아래 예시와 같이 로드 밸런서에 문제가 생기면 클라이언트들이 제대로 된 응답을 받을 수 없기 때문에, 아래와 같은 아키텍쳐에서 로드 밸런스는 SPOF 라고 볼 수 있다. - MSA 같은 아키텍쳐가 시스템의 기능을 여러 위치에 분산한다는 점에서 잠재적인 SPOF의 위험을 줄일 수 있다. - 이렇게 하면 시스템의 일부가 작동을 멈출 때 전체 시스템이 실패하는 것을 방지할 수 있습니다. 다음주에는 레이어드 아키텍쳐에 대해서 공부해봐야겠다 2021. 10. 17.