SLASH 21 - 토스 서비스를 구성하는 서버 기술 그리고 "나"
·
개발/Server
1. 토스 서비스를 구성하는 서버 기술들- MSA 구성으로 많은 서버가 뜨는데, 많은 서버를 관리하고 효율적인 인프라 활용을 위해 K8S를 container orchestration으로 도입- calico cni와 service mesh로 Istio를 사용중- 민감자료 저장 용도로 ceph를 이용해 내부 스토리지 서비스를 제공하고 있음- 이전에는 memcached를 캐시로 많이 사용했으나 데이터 보존 문제와 optimistic lock 구현 편이성 때문에 redis cluster를 캐시로 더 많이 사용 중 - kafka는 로그 데이터 파이프라인으로 사용하는 클러스터 / 서비스에서 메세지큐로 사용하는 클러스터 하나를 운영 중- 로깅과 모니터링으로는 elk + filebeat, thanos, grafana를..
보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기!
·
개발/Server
1. 분산 환경이 만들어진 이유?- monolithic system : 서비스가 커지며 배포/개발 경험/단일 장애점/확장성에 문제가 발생- MSA로 분리 -> 기존에 존재하던 로직들을 분리된 서버로 옮겨가는 방식- 신규 domain에 대해서는 DB까지 분리된 MSA서버에 개발- 환전이 같은 DB + 단일 서버에 구현되어 있다면, 굉장히 간단하게 구현이 가능함. e.g) transaction을 열어 각 계좌(원화/외화)에 업데이트 후 transaction commit하면 됨 (쉽게 원자성 보장가능)- 분산 환경에서 원화 계좌/ 외화 계좌가 분리되고 각각의 DB를 사용할 경우?! 분산 트랜젝션을 통해 원자성을 보장해야함  2. 2PC(2 phase commit) vs SAGA(Saga pattern)- 분산..
웹뷰로 시작되는 nestJS로 똑똑하게 서류 스크래핑하기
·
개발/Server
AS ISService Webview Scraping Webview메시지를 통해 요청을 통해 주고 받는 구조문제점 : 어떤 메시지를 주고 받을지 사전에 커뮤니케이션이 필요(커뮤니케이션 비용 증가) + 메시지가 화면에 종속되어 있어 테스트가 어려움 + 디버깅과 테스트가 어려움요구사항 : 병렬처리 가능 + 이슈 발생 시 디버깅 용이 + 서비스의 시작과 끝이 명확해지도록 + 모두의 생산성이 올라가는 방향Message vs API메시지 스펙 정의를 위한 사전 협의 필요 vs 표준화된 스펙으로 통신 때문에 협의 불필요서비스 개발에 필요한 비용이 큼 vs 서비스 개발에 필요한 비용이 적음유지 보수가 난해하고 어려움 vs 서비스 유지 보수가 상대적으로 쉬움**나의 생각 : 결국 메시지를 도입하는 것은 비동기적 처리..
[대규모 시스템 설계 기초2] 1장 근접성 서비스 (2)
·
개발/Server
지도 주변 검색 방법 방안 1: 2차원 검색주어진 반경으로 그린 원 안에 놓인 사업장을 검색하는 방법이다. 가장 직관적이지만 지나치게 단순하다는 문제가 있다. 특히나 이를 SQL문으로 옮기게 되면 테이블 전부를 읽어야하므로 비효율적이다. index를 만드는 만들어 개선해보아도 데이터가 2차원적이므로(위도, 경도) 칼ㄹ럼별로 가져온 결과도 여전히 엄청나게 많다. 때문에 index를 추가하는건 한 차원의 검색 속도만 개선할 수 있다.  지리적 정보에 색인을 만드는 방법은 두종류가 있다. 첫번째는 해시 기반 방안으로 균등격자(even grid), 지오해시(geohash), 카르테시안 계층(cartesian tiers)등이 있다. 두번째로는 트리 기반 방안으로 쿼드트리(quadtree), 구글 S2, R 트리 ..
[대규모 시스템 설계 기초2] 1장 근접성 서비스 (1)
·
개발/Server
들어가며: [가상 면접 사례로 배우는 대규모 시스템 설계 기초1] 책을 우연히 읽고 배우게된 내용이 많아 [가상 면접 사례로 배우는 대규모 시스템 설계 기초2]도 바로 구매하여 읽게 되었다. 어떤 서브스에 대하여 시스템이 어떤 구조로 설계되어 있고 그런 구조로 설계된 근거들에 대해서 단계 단계 설명한다. 특히나, 새로운 feature에 대하여 개발할 때 참고하여 적용할만한 내용을 많이 담고 있어 읽으면서 이미 구현해본 내용에 대한 아쉬움과 앞으로 적용해볼만 사항들을 정리해볼 수 있을 것 같다.  1장 근접성 서비스(proximity service) 근접성 서비스는 음식점, 호텔, 극장, 박물관 등 현재 위치에서 가까운 시설을 찾는데 이용된다.   1단계: 문제 이해 및 설계 범위 확정 서비스를 구현하기 ..
APM 소스 설치 - Ubuntu 20.04 + Apache 2.4.46 (수동설치)
·
개발/Server
Apache 수동 설치하기 1. apr 설치 (에러에 늪에 빠지고 싶지 않다면 에러 먼저 읽어보고 시작하는 걸 추천! ) $ sudo su /usr/local# mkdir apache /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz /usr/local# tar xvfz apr-1.7.0.tar.gz /usr/local# tar xvfz apr-util-1.6.1.tar.gz /usr/local# wget https://www.apache.org/dist/apr/apr-1.7.0.ta..
Virtual Box + Ubuntu 20.04 설치하기
·
개발/Server
안녕하세요 :) 오늘은 Virtual Box와 Ubuntu를 설치해 보겠습니다. 두 가지 모두 손 쉽게 다운 받을 수 있습니다. Virutal Box 설치하기 https://www.virtualbox.org/wiki/Downloads Windows hosts 클릭 후 설치 Ubuntu 20.04 설치하기 https://ubuntu.com/download/desktop Download Ubuntu Desktop | Download | Ubuntu Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things. ubuntu.com 저는 우..