테크블로그리뷰
-
Toss | 서버 증설 없이 처리하는 대규모 트래픽📖 개발 공부 2024. 7. 27. 18:11
토스 테크블로그를 읽고 쓰는 글입니다. 서버 증설 없이 처리하는 대규모 트래픽늘어나는 트래픽을 잘 처리하기 위해 서버 개발자는 어떤 고민을 해야 할까요? “라이브 쇼핑 보기” 서비스에 대규모 트래픽이 들어오면서 겪은 문제와 해결책을 공유드려요.toss.tech 급격하게 성장하는 서비스가 겪는 문제라이브 쇼핑 보기 서비스는 피크 시간대 동시 접속자 수는 분당 수십만 명, 포인트 지급 요청 API 요청은 초당 수십만 건이 오는 서비스로 성장했다.급격히 늘어난 트래픽은 성장하는 서비스 서버에 치명적일 수 있다. 서버가 트래픽을 유연하게 처리하지 못하면 유저에게 안 좋은 경험을 제공하고, 최악의 상황에서는 이탈할 수도 있기 때문이다. 트래픽이 급격히 늘어나면 쓰레드가 밀리는 것부터 시작해서 데이터베이스와 캐..
-
Spring AOP를 Kotlin으로 개선해보기! (feat. 카카오페이 테크블로그)📖 개발 공부/kotlin 2024. 3. 17. 12:56
이번 글에서는 Spring AOP의 아쉬운 점과 함께 Kotlin의 Trailing Lambda 문법을 통해 개선하는 방법을 알아보려고 한다!카카오페이 테크블로그의 "Kotlin으로 Spring AOP 극복하기!" 글을 보고 해결한 내용이다. AOP 간단 설명AOP는 관점 지향 프로그래밍(Aspected Oriented Programming)으로 로깅, 트랜잭션과 같은 공통으로 실행되어야하는 부분을 비즈니스 로직에서 떼어내어 모듈화하여 재사용하는 것을 의미한다.AOP를 사용하여 비즈니스 로직을 작성하는 데에 집중할 수 있게 해준다. 이때 트랜잭션 로직과 같이 삽입되는 로직을 Advice, 그리고 로직이 삽입될 함수를 JoinPoint라고 정의한다. Spring AOP 아쉬운 점 살펴보기나는 Spri..
-
Line | 오픈채팅 시스템 설계📖 개발 공부 2024. 2. 18. 02:24
“LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법”을 보면서 오픈 채팅 시스템 설계를 정리한 내용이다! 오픈 채팅 시스템의 아키텍처는 다음과 같다. 채팅의 다양한 이벤트(메시지 전송, 메시지 반응, 메시지 읽음 등)들을 채팅 서버에 보낸다.해당 이벤트들을 모두 스토리지에 저장한다.그리고 Kafka에 해당 이벤트들을 발행한다.푸시 서버는 해당 이벤트들을 소비하여, 사용자들에게 해당 이벤트가 발생했다고 알린다.사용자는 해당 이벤트를 조회한다. 이때 스토리지에 접근하여, 새 메시지를 화면에 추가하는 액션을 실행한다. 이 아키텍처에서 트래픽이 급증할 수 있는 패턴들을 살펴보자.Hot Pattern 1: 수십개의 메시지를 주고받는 핫 챗만약 한 채팅에 5천명 이상의 사용자가 있다고 해보자.이때 [..
-
Toss | null return은 코드 복잡성을 만든다.📖 개발 공부 2024. 2. 17. 01:02
토스 테크블로그를 읽고 쓰는 글입니다.https://toss.tech/article/engineering-note-2 개발자 고객을 위한 코드 복잡성 관리! ☑️ 체크리스트ㄴ 코드 한줄을 바꾸기 위해 바꿔야할 코드가 많다?ㄴ 메서드 인자에 값을 추가하기 위해 지나가는 모든 메서드 인자 값을 추가한 적이 있다?ㄴ ... 하나라도 체크를 했다면, 코드 복잡성을 경험해본 것이다! 직접 겪어보고 크게 공감되었던 두개의 체크리스트만 가져와보았다. 코드를 바꿔야할 때 위의 경험들에 대해 고민을 해왔던 적이 종종 있었다. 과연 이게 올바른 방향일까? 라는 의문과 함께. “코드를 읽는 사람 입장에서 null은 복잡성을 만든다.” 예시를 보자.val user: User? = userRepository.findByNam..