목록전체 글 (75)
Arthur's Blog

배경지식 gRPC는 Google에서 개발한 RPC(Remote Procedure) 시스템이다. 전송을 위해 TCP/IP 프로토콜과 HTTP 2.0 프로토콜을 사용하고 IDL(Interface Definition Language)로 protocol buffer를 사용한다. RPC(Remote Communication Mechanism) RPC(원격 프로시저 호출)는 한 프로그램이 네트워크의 세부 정보를 이해하지 않고도 네트워크 안의 다른 컴퓨터에 있는 프로그램에서 서비스를 요청하는 프로토콜이다. RPC는 client-server 모델을 사용한다. 클라이언트에서 서비스를 요청(function call)하면 서버에서 서비스를 제공한다. RPC 개념 HTTP 프로토콜 HTTP(Hypertext Transfer ..
라우팅 테이블 라우팅 테이블은 VPC 내부, 외부로 나뉜다. 로드밸런서를 이용해서 igw가 연결안되어있는 VPC와 연결시켜준다. 즉, 외부 -> ELB -> VPC 내부 구조이다. ELB에서 https만 열어주면 22번 포트같은 critical한 포트는 접근이 불가능하다. - 3 teir = Presentation layer + Business layer + Data layer (클라이언트 + 어플리케이션 + 데이터) - 2 teir = Application layer + Data layer (클라이언트 + 데이터) 로드 밸런서 리스너 : 듣는 port 타겟 : 요청을 전달할 곳 target group에는 ec2와 같은 서비스가 있다. 상태검사 ELB에서 상태검사에서 설정 가능 라운드로빈 전략에서 unh..
Redis란? REmote DIctionary Server Redis는 고성능 Key-value 저장소로서 리스트, 해시, 셋 정렬된 셋 등 여러 형식의 자료구조를 지원하는 NoSQL이다. 메모리에 상주하면서 RDBMS의 캐시 솔루션으로 주로 사용됨. 사용용도 Redis는 Message Queue, Shared Memory, Remote Dictionary 용도로 사용할 수 있다. TTL(Time To Live) Redis의 Data가 유지되는 시간을 뜻한다. 따로 설정하지 않으면 -1이 들어간다. -1의 의미 레디스 명령에서 ‘-1’은 인덱스의 마지막 자리를 의미한다. 음수가 입력되면 인덱스를 맨 마지막 부터 센다. 그러므로 ‘-2’는 맨 마지막에서 두 번째의 인덱스를 나타낸다.
CORS Cross-Origin Resource Sharing(CORS)은 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소시에 접근할 수 있도록 하는 메커니즘을 말한다. 하지만 다른 origin에서 내 리소스에 함부로 접근하지 못하게 하기 위해 사용된다. CORS 필요성 만약 내가 서비스하고 있지 않은 사이트에서 세션을 요청해서 세션을 획득할 수 있다면 해당 사이트는 악의적으로 내 세션을 탈취하거나 다른 행동을 할 수 있다. 그래서 브라우저에서는 이러한 요청을 막는다. 피싱사이트가 대표적인 공격 사례인데, 이러한 것을 막고 내가 허용한 origin들만 요청할 수 있도록 하기 위해 필요하다.
SNS(Simple Notification Service) publisher(게시자)가 Subscriber(구독자)에게 메세지를 전송하는 관리형 서비스 Publisher는 Topic(주제)에 메세지를 발행한다. Topic은 수많은 Subscribers에게 전달될 수 있다.(fan out) 이때 전달 방식은 Lambda, SQS, Email 등 여러가지가 있다. 다른 시스템들이 이벤트에 신경쓰는가? Topic에 메세지를 publish하고싶어하고, 사람들에게 발행됐다고 알리고 싶을 때 SQS(Simple Queue Service) 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전관리형 메세지 대기열 서비스 시스템은 Queue로 부터 새로운 이벤트를 실시할 ..

문제 상황개발 환경에 특정 코드가 배포된 이후 Java Application의 속도가 느려지다 멈추는 현상이 발생하였다. 문제 추론회사에서 코드를 작성하다 쿼리 결과의 일부 구조 자체를 수정해야하는 상황이 생겨서 QueryDSL의 구조 변환 함수인 transform을 사용하였다.*(transform은 쿼리 결과값을 가져온 이후, Application에서 메모리를 사용하여 변환하는 함수이다.) transform을 사용한 Api를 10회 호출하니 멈추는 부분을 발견해서 DB Connection Leak이 발생할 것으로 추론하였다.(설정되어있는 Connection Pool size : 10회) 관련 이슈 발견https://github.com/querydsl/querydsl/issues/3089HikariCP..

김영한님 배달의 민족 서비스의 주문수는 년 평균 2.3배 증가하였다. 2015년 하루 주문수 5만이하 MS SQL + PHP, ASP 대부분 루비DB(MS SQL) 스토어드 프로시저 방식 사용 루비 DB장애시 전체 서비스 장애 스토어드 프로시저(SP, Stored Procedure)란 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합. 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한(지속성) 것으로, 영구저장모듈(Persistent Storage Module)이라고도 불린다. 최종적으로 테이블이 700이상, 스토어드 프로시저 4000개 이상 존재 => 거대한 모놀리틱 시스템 루비DB는 굉장히 고스펙이었다. CPU모니터링 화면을 켜면 모니터링 화면이 다..