There are 6 posts.

Refactoring LiveData to Flow

October 11, 2023

안녕하세요. 페스타고의 베르입니다. 페스타고 앱을 개발하면서 LiveData 를 StateFlow 와 SharedFlow 로 리팩터링 했습니다. 리팩터링한 이유, 과정 그리고 어려웠던 점까지 공유하려고 합니다. Festago 를 개발하면서 ViewModel 의 UiState 및 Event 를 감지하기 위해 LiveData 를 사용했다. 이상적으로 Vie…


LiveData로 이벤트 처리하기: SingleLiveData

September 19, 2023

안녕하세요. 페스타고의 해시입니다. 페스타고 앱을 개발하면서 다른 액티비티로 넘어가거나 토스트를 띄우는 등의 이벤트를 어떻게 처리할지를 고민하게 되었고, 이러한 이벤트를 처리하기 위해 시도했던 방법과 겪었던 문제점, 그리고 해결 방법에 대해 다루려 합니다. 먼저 어떤 상황에서 이벤트가 발생하는지 코드를 통해 살펴보자. 뷰모델에서 로그인 여부를 확인해 로그…


Facade 객체를 활용해 트랜잭션에서 외부 API 통신 분리하기

September 11, 2023

안녕하세요. 페스타고팀의 애쉬입니다. 🏹 페스타고 팀에서 Facade 객체를 활용해 외부 API 통신을 분리한 과정을 설명하고자 합니다. 문제 상황 Oauth2 기반 로그인 메서드에서, Oauth2 API 통신이 트랜잭션 범위 안에 속해있었습니다. 외부 API 통신은 비교적 시간이 오래 걸리는 메서드로, 이가 트랜잭션 범위 안에 포함되면 DB 커넥션을 …


선착순 티켓팅에 Redis 도입하기

September 10, 2023

안녕하세요. 페스타고의 애쉬 입니다. 🏹 ‘대학 축제 줄서기 서비스’ 페스타고를 개발하며, 티켓팅 상황에서 동시성 보장을 위해 Redis를 도입해보았습니다. 아래는 저희 팀의 요구사항과 문제 상황, 그리고 해당 문제 상황의 해결책으로 Redis를 도입한 이유입니다. 1. 요구사항 티켓은 지정된 수량만큼만 발급되어야합니다. 2. 문제 상황 동시에 여러 사용…


페스타고의 인증 - 여러 사용자의 인증과 인가

August 24, 2023

서론 안녕하세요. 페스타고의 글렌입니다. 🥃 페스타고에는 다양한 역할의 사용자가 존재합니다. 이렇게 다양한 역할의 사용자가 있다면 사용자의 역할에 맞는 인증과 인가 작업이 필요합니다. 단순히 역할에 따른 구분이라면 큰 문제가 없겠지만, 다양한 사용자들이 접속하는 환경에서 인증을 하는 방법에서 차이로 인해 문제가 발생했습니다. 어떠한 문제점에 직면했고, 이…


페스타고의 인증 - OAuth2를 선택하고 적용한 방법

August 20, 2023

서론 안녕하세요. 페스타고의 글렌입니다. 🥃 페스타고는 인증을 구현할 때, 최소한의 정보로 안전하게 인증을 구현할 수 있는 OAuth2를 채택하였습니다. OAuth2를 구현할 때 서비스를 제공하는 회사들은 매우 많습니다. 그중에서 저희가 선택한 OAuth2 제공자는 입니다. 카카오톡을 선택한 이유는 저희 서비스의 특성상 사용자 간의 티켓 거래를 막기 위…