본문 바로가기

전체 글

(108)
Roborazzi 로 UI 테스트 커버리지 제고하기 동기사내 전동 출입문과 연동이 되는 근태 및 출입 관리 앱을 운영하고 있습니다. 서비스 안정화 단계에 접어들면서 오류 사항 개선 정도만 진행하게 될 줄 알았으나, 전직원이 사용하는 앱이다 보니 이런 저런 추가 요구 사항이 수시로 들어오고 있습니다. 일주일에 한 번은 새로운 기능이나 마이너한 변경이 있는 것 같습니다. 모바일 앱의 경우 1인 개발 환경이고, 현재 맡아 진행하고 있는 다른 프로젝트도 많아서 해당 서비스에 많은 시간을 쏟을 수가 없는 상황입니다. 그렇다 보니 매번 배포 시 UI 관련 오류 발생에 대한 불안감이 늘 존재합니다. 그렇다고 다양한 기기에서 시나리오를 따라 UI 하나씩 검증하는 수동 E2E 테스트는 그 피로도가 너무 높고요.왜 테스트 커버리지를 제고하여야 하는가테스트 커버리지는 전체 ..
[Jetpack Compose] Strong Skipping Mode 는 어떻게 렌더링 효율을 개선하는가 동기코틀린 2.0.20 버전 이상부터 Jetpack Compose 프로젝트 생성 시 StrongSkippingMode 가 기본으로 적용되어 렌더링 이슈를 겪는 일이 크게 줄었습니다. Jetpack Compose 를 초창기부터 사용해오셨던 분들은 과거에 비해 확실히 신경쓸 것이 줄어 개발하기 편해지셨으리라 봅니다. 저도 정말 요긴하게 사용하고 있는데, 어떤 방식으로 변수가 기억되고 람다가 기억되는지 명확하게 알고 있지는 못해서, 이번 기회에 알아보고 정리해두려 합니다. 강력 건너뛰기 모드 | Jetpack Compose | Android Developers강력한 건너뛰기는 불안정한 매개변수가 있는 컴포저블을 건너뛸 수 있도록 하고 불안정한 캡처가 있는 람다의 자동 메모이제이션을 사용 설정하여 성능을..
BaselineProfile 을 활용하여 앱의 Start-Up-Time 단축하기 동기재직 중인 회사에는 모 공공기관 프로젝트 수행을 위해 구매했던 전동 출입문이 하나 있습니다. 최근 회사가 이전하면서 '전동 출입문에 태블릿이 달려있으니, 활용해서 근태 관리를 해보자'는 의견이 있어 관련하여 개발에 착수했는데요. 전체 개발이 완료되었고 스토어 배포까지 모두 마쳤습니다. 실제로 모두들 잘 사용하고 있고요. 앱 Start-Up-Time 에 문제가 있거나 하진 않습니다만, 전동 출입문이 하나 밖에 없다 보니, 한 번에 여러 명이 몰려있으면 약간의 병목이 생겼습니다. '큰 문제는 아니지만 그래도 조금이라도 더 빠르면 좋지 않을까?' 라는 생각이 들어, 과거에 우연히 알게 되었던(그러나 시도하지는 않았던) Baseline Profile 을 이용한 앱 Start-Up-Time 개선에 도전해보고..
플레이스토어 안드로이드 개발자 인증, 패키지 이름 등록하기 동기KMP, CMP 를 활용하여 사내 출입 관리 서비스를 새롭게 개발하였습니다. 개발을 완료하고 이를 출시하기 위한 과정에서 발생한 이슈를 공유합니다.이슈플레이스토어의 Android 개발자 인증과 관련된 이슈이며, 2026년 3월 중순 이후부터는 해당 이슈를 해결하지 않으면 앱 출시가 불가능합니다. 이와 관련한 슈팅이 없었다면, 플레이스토어 개발자 계정 접근 시 아래와 같은 배너가 표출됩니다. 배너의 'Android 개발자 인증으로 이동' CTA 버튼을 클릭하면 다음 화면으로 진행됩니다. 쉽게 말하자면, 지금까지 업로드 했던 앱의 패키지에 대한 소유권을 획득해야 합니다. xxx.yyy.zzz 형식으로 앱 패키지 명칭을 작성할 수 있기에 xxx.yyy 만 다른 개발자나 조직이 사용하는 이름 그대로 설정하..
AI 코딩 에이전트에 대한 소회 동기자고 일어나면 새로운 AI 모델과 프로덕트가 쏟아지는, 그야말로 AI 춘추전국시대에 살게 되었습니다. 생산성이 비약적으로 상승할 것이라는 기대감과 동시에, 한편으로는 범람하는 기술 홍수 속에서 큰 피로감을 느끼기도 합니다. 최근 다양한 AI 코딩 에이전트를 사용하며 느낀 점은 단순한 편리함 그 이상이었습니다. 가끔씩 등골이 오싹오싹 하기도 하지만요. 아무튼, 오늘은 가벼운 마음으로 이에 대한 소회를 풀어보고자 합니다.아 참, 이 글은 AI 의 도움을 일절 받지 아니하고 작성되었습니다.사용 소감코딩 에이전트가 세상의 빛을 본지 한참이 지나서야 이를 제대로 마주했습니다. 이유는 별 거 없는데, 제가 겪고 있는 문제를 정확하고 완벽하게 해결해주기를 바랐지만 짧지 않은 시간 동안 만났던 코딩 에이전트들은 한..
이미지 최적화로 다양한 지표 개선하기 동기운영 중인 사이드 프로젝트 앱 에는 BM 이 없습니다. 이는 곧, 발생하는 운영 비용을 프로젝트 참여 인원들의 사비로 충당해야 한다는 것을 의미합니다. 현재로서는 실사용자가 그다지 많지 않아 비용이 크다고 할 수는 없으나, 최근 마케터 분이 새로 합류하셔서, 유의미한 사용자 수 증대를 기대하고 있습니다. 이에 따라 추후에 발생하게 될 비용 증가를 사전에 방지하는 것이 중요해 보였습니다. 현재 의 운영 비용은 대부분 EC2, RDS, VPC 와 같은 인프라 고정비에서 발생하고 있습니다. 하지만 사용자 수가 증가한다면 서비스의 핵심 기능인 '이미지 인증' 관련 비용이 향후 운영에 적잖은 부담이 될 것으로 판단했습니다. 사용자 증가가 곧 운영 비용의 증가로 직결되는 구조이기 때문에, 서비스 확장 이전에..
MVVM 과 MVI 의 범위에 대한 견해 MVVM 과 MVI 에 대한 원론적 이해를 다루는 포스트가 아닙니다. 개인적 고찰의 기록이며, 관점에 따라 받아들여질 수 없는 내용이 많을 수 있습니다.또한, 유보적 어조를 사용하지 않았습니다.동기후임자가 생겨 교육 중에 있습니다. 졸업 프로젝트로 안드로이드 앱을 만들어 제출했다고 해서 코드를 봤는데, 이렇다 할 아키텍처 없이 구현된 프로젝트였습니다. 그래도 기능은 잘 동작했고요. 기본적인 Lifecycle 이나 문법 등에 대한 지식은 있는 것 같아서 아키텍처에 대한 이야기를 해주려 합니다. 재직 중인 회사는 다양한 프로젝트를 진행하는데요. 직접 개발한 프로젝트는 Jetpack Compose 를 사용하고, 타사에서 개발한 프로젝트를 유지보수하는 경우, 또는 Jetpack Compose 로 마이그레이션을 ..
Android Platform Architecture 의 계층 간 통신에 대한 고찰 동기실무와 사이드 프로젝트에서 다양한 문제를 해결하고 있습니다. 저는 그 과정에서 동작 원리에 대한 이해와 문제 발생 사전 차단을 위해 내부 코드를 자주 들여다보는 편입니다. 이 작업은 안드로이드 개발에 대한 저변을 확장하는 데에 큰 도움이 되는데요. 최근에는 최적화와 관련된 문제들을 마주하고 있는데, 내부를 살펴볼수록 안드로이드 플랫폼 자체에 대한 해박한 지식이 전제되어야 해결할 수 있는 경우가 많았습니다. Five-Layered-Architecture 안드로이드 플랫폼은 총 5계층으로 이루어져있습니다. 로우 레벨부터 순서대로 Linux Kernel - Hardware Abstraction Layer - Native Libraries + ART - Java API Framework(Android Fra..