SLASH 21 - 토스 서비스를 구성하는 서버 기술 그리고 "나"
·
개발/Server
1. 토스 서비스를 구성하는 서버 기술들- MSA 구성으로 많은 서버가 뜨는데, 많은 서버를 관리하고 효율적인 인프라 활용을 위해 K8S를 container orchestration으로 도입- calico cni와 service mesh로 Istio를 사용중- 민감자료 저장 용도로 ceph를 이용해 내부 스토리지 서비스를 제공하고 있음- 이전에는 memcached를 캐시로 많이 사용했으나 데이터 보존 문제와 optimistic lock 구현 편이성 때문에 redis cluster를 캐시로 더 많이 사용 중 - kafka는 로그 데이터 파이프라인으로 사용하는 클러스터 / 서비스에서 메세지큐로 사용하는 클러스터 하나를 운영 중- 로깅과 모니터링으로는 elk + filebeat, thanos, grafana를..
0. 경린의 주절주절
·
경제
출근길에 Stanley Druckenmiller의 인터뷰 영상을 보았다.투자가 중 전설로 알려진만큼 30년 연평균 30%의 수익을 낸 엄청난 인물이다. 심지어 마이너스인 해가 없었다..그의 자산은 $9.98B... (14조원..)어마어마하다. 그의 자산은 대부분 투자로 모았다.2010년부터 패밀리 오피스를 운영하면서 자신의 돈만 운용하고있다.  그의 투자 철학을 알아보자.  Q. How do you think the tech sector will develop what kind of sceince are you seeing there?A. The AI boom is going unabated(약해지지 않는), Nikolai. I think the private sector just sees it as a..
AWS transit gateway
·
개발
What is AWS Transit Gateway?- 중앙 허브를 통해 VPC(Virtual Private Cloud)와 온프레미스 네트워크를 연결- 복잡한 피어링 관계를 제거하여 네트워크를 간소화- Transit Gateway는 고도로 확장 가능한 클라우드 라우터 역할 Why use Transit Gateway?- 아키텍처 간소화- 가상 프라이빗 클라우드 및 엣지 연결에 대해 더 나은 가시성을 확보 및 효과적인 제어- AWS 글로벌 프라이빗 네트워크의 리전 간 피어링 암호화를 통해 보안을 개선 핵심 개념- 연결 : 각 연결은 하나의 라우팅 테이블과 연결하나 이상의 VPCAWS Direct Connect rpdlxm dnpdl다른 Transit Gateway와의 피어링 연결Transit Gateway에 ..
반짝이는 딸들에게
·
일상
반짝이는 딸들에게  - 니모 김희진 지음 "반짝이는 니모"라는 유튜브 채널을 예전부터 구독해왔다. 굉장히 초반에 구독했던 것으로 기억하는데 시간이 지남에 따라 구독자가 늘었고 특히나, 채널의 주인공의 니모의 딸인 나딘이 넷플릭스의 솔로지옥이라는 프로그램에 나가게 되면서 채널이 더욱 크게 유명세를 탔다.  유튜브는 참 신기하다. 구독자가 굉장히 적은 유튜버를 발견하고 영상의 매력에 빠져 구독을하고 시간이 조금 지나면 어느덧 채널이 엄청나게 성장해있다.사람들이 무의식적으로 호감과 관심을 갖게되는 커먼 센스가 정말로 있는 것 같다.  아무튼 다시 책으로 돌아가서, 책의 내용을 조금 기록해보려한다. 책이 무겁거나 인생에 큰 뜻을 가져다주진 않았다. 오히려 가볍고 편안해서 2시간이면 충분히 완독이 가능했다.  기..
생각 정리
·
일상
매일 출퇴근을 반복하다보면 지하철에서 출퇴근 인파에치여 핸드폰만 쳐다보고 보내는 시간이 어느순간 아깝게 느껴졌다.떄문에 출퇴근할 때만이라도 핸드폰을 보지 않기로 스스로와 약속했다. 대신 책을 보기로! 물론 이 약속은 늘 지켜지진 않는다. 24시간 중 눈 떠 있는 시간의 대부분은 모니터를 보고있다.아마 나를 포함한 대부분의 현대인이 공통적으로 격고 있는 문제이지 않을까싶다.숏폼의 시대가 도래하면서 많은 사람들이 짧고 강한 자극에 더욱 익숙해지고 있다.잔잔한 일상은 어느덧 행복보단 지루하게 느껴지는 이유가 이 때문이지 않을까싶다. 자극이 없는 삶 즉, 잔잔하게 아무일도 일어나지 않는 삶 이것이 사람들이 꿈꾸는 삶일까?아니라고 생각한다. 대부분의 사람들이 추구하는 삶은 오늘날 SNS에 투영된 삶을 행복한 삶으..
SSE 이벤트 푸쉬로 불필요한 polling 제거하기
·
개발
1. 도입 배경 증권 화면에서 준실시간으로 가격을 보여주기 위하여 polling으로 데이터를 불러옴 -> 사용자가 늘어나면서 CPU 사용률이 커짐 2. Push Server 구성WebSocket  vs ServerSentEvents (SSE) WebSocketServerSentEventProtocolHTTPWebSocketDirection서버 사이드 단방향양방향Auto ReconnectOXCookieOXResponse TypeTexttext or byte증권 페이지에서 WebSocket은 양방향 통신이 필요할 때, 송/수신 데이터량이 많을 때, 시세 조회할 때(화면이동 할 때마다 시세를 구독할 지 말지) 주로 사용증권 페이지에서 불필요한 polling 제거할 때, 개인화된 데이터를 이용한 event pu..
Spring boot application.yml Configuration
·
개발
# application.ymlapp: name: MyApplication version: 1.0 features: enableFeatureX: true enableFeatureY: false #kotlin - 클래스는 위의 설정 값으로 매핑됨@ConfigurationProperties("app")class AppProperties { lateinit var name: String lateinit var version: String lateinit var features: Features class Features { var enableFeatureX: Boolean = false var enableFeatureY: Boolean = f..
보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기!
·
개발/Server
1. 분산 환경이 만들어진 이유?- monolithic system : 서비스가 커지며 배포/개발 경험/단일 장애점/확장성에 문제가 발생- MSA로 분리 -> 기존에 존재하던 로직들을 분리된 서버로 옮겨가는 방식- 신규 domain에 대해서는 DB까지 분리된 MSA서버에 개발- 환전이 같은 DB + 단일 서버에 구현되어 있다면, 굉장히 간단하게 구현이 가능함. e.g) transaction을 열어 각 계좌(원화/외화)에 업데이트 후 transaction commit하면 됨 (쉽게 원자성 보장가능)- 분산 환경에서 원화 계좌/ 외화 계좌가 분리되고 각각의 DB를 사용할 경우?! 분산 트랜젝션을 통해 원자성을 보장해야함  2. 2PC(2 phase commit) vs SAGA(Saga pattern)- 분산..