아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
레딧 favicon레딧

2FA 앱, 정규식 최적화와 병렬 처리로 성능 2배 향상!

by DD
2026-03-14
4개월 전
조회수 32

2FA 앱의 성능 병목 현상을 분석하고, 정규 표현식(Regex) 최적화를 통해 계산 시간을 획기적으로 단축함

병렬 처리를 도입하여 여러 CPU 코어를 활용, 전반적인 처리 속도를 향상시킴

액터(Actor) 기반의 동기화 기법을 사용하여 병렬 처리 과정에서 발생하는 경쟁 조건 문제를 해결함

앱 출시 후에도 지속적인 성능 개선을 통해 사용자 경험(UX)을 향상시키는 과정을 제시함

정규 표현식(Regex) 최적화를 통한 성능 개선

저자는 2FA 코드의 '흥미로운 숫자' 패턴을 감지하기 위해 사용된 정규 표현식(Regex)이 성능 병목 현상의 주범임을 확인했다. 특히, '666666'과 같은 섹스튜플(Sextuple) 패턴을 감지하는 `checkThoseSexts()` 메서드는 전체 처리 시간의 상당 부분을 차지했다. 저자는 정규 표현식 대신 문자열 비교(String Matching) 방식을 사용하여 성능을 획기적으로 개선했다. 정규 표현식(Regex)을 직접 하드코딩된 문자열 집합으로 대체하여, `checkThoseSexts()` 메서드의 실행 시간을 30배 이상 단축했다.

병렬 처리를 통한 TOTP 코드 생성 속도 향상

저자는 TOTP(Time-based One-Time Password) 코드 생성을 위해 병렬 처리(Parallelism)를 도입하여, 여러 CPU 코어를 활용하도록 했다. 초기에는 각 스레드가 독립적으로 코드를 생성하는 방식을 사용했지만, UI가 멈추는 문제가 발생했다. 이를 해결하기 위해, 저자는 CPU 코어 수에 맞춰 스레드 수를 제한하고, 각 스레드가 계산할 코드 범위를 조정했다. 이로 인해, 전반적인 코드 생성 속도를 56% 향상시켰다.

액터(Actor) 기반의 동기화(Synchronization) 구현

병렬 처리 과정에서 발생하는 경쟁 조건(Race Condition) 문제를 해결하기 위해, 저자는 액터(Actor)를 활용했다. 액터는 상태(State)에 대한 안전한 접근을 보장하며, 여러 스레드에서 동시에 접근하는 것을 방지한다. 저자는 `CodeIncrementor` 액터를 사용하여 각 스레드가 중복 없이(Without Duplication) 다음 TOTP 코드를 계산하도록 했다. 이로써, 병렬 처리의 안정성을 확보하고, 정확한 코드 생성을 보장했다.

성능 프로파일링(Profiling) 도구 활용

저자는 Xcode Instruments를 사용하여 앱의 성능 병목 현상을 정확하게 파악했다. 특히, Time Profiler를 활용하여 CPU 사용량을 분석하고, 코드 실행 시간을 측정했다. 이를 통해, 정규 표현식(Regex)의 성능 저하, 초기 코드 로딩 시간 지연 등의 문제를 발견하고, 개선 방향을 설정했다. 저자는 프로파일링(Profiling)을 통해 얻은 데이터를 기반으로, 구체적인 코드 개선을 수행했다.

앱 출시 후 성능 개선의 중요성

저자는 앱 출시 후에도 지속적인 성능 개선의 중요성을 강조하며, 사용자 피드백(User Feedback)을 기반으로 개선 사항을 도출해야 한다고 언급했다. 또한, 성능 개선 과정을 통해 얻은 통찰력을 공유하며, 개발자들이 지속적인 성능 관리(Performance Management)를 통해 사용자 경험을 향상시킬 수 있음을 보여주었다. 저자는 성능 개선을 통해 앱의 가치를 높이고, 사용자 만족도를 극대화할 수 있음을 강조했다.

The 2FA app that tells you when you get `314159`
고급
아키텍처
Swift
Regex
Metal
Mobile
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

1,400달러 아이폰, 덧셈도 못한다?!

해커뉴스 로고

18세 개발자, Swift Student Challenge Distinguished Winner!

벨로그 로고

Swift async/await, 신입도 이해하는 동시성 마법!

데브시스터즈 로고

Apple Silicon GPU로 SQLite 성능을 획기적으로 개선!

레딧 로고

뱅크샐러드 iOS 개발팀의 화면 단위 통합 테스트 노하우 공개!

뱅크샐러드 로고

Mac에서 AI 에이전트를 100% 오프라인으로!

프로덕트 헌트 로고
레딧 favicon레딧
고급
아키텍처
Swift
Regex
Metal
Mobile

관련 추천 글

1,400달러 아이폰, 덧셈도 못한다?!

해커뉴스 로고

18세 개발자, Swift Student Challenge Distinguished Winner!

벨로그 로고

Swift async/await, 신입도 이해하는 동시성 마법!

데브시스터즈 로고