[Android] DroidKnights 2024

kk_jang93·2024년 6월 11일
0
post-thumbnail

생애 첫 드로이드 나이츠 생생 후기

안드로이드 개발자로써 드로이드나이츠 는 정말 좋은 행사입니다.
회사에서 감사하게도 전폭적인 지원을 해주신 덕분에 처음으로 행사를 다녀왔습니다.

여러 Section 중 저는 4가지의 Section을 귀담아 듣고 느낀점과 정리를 해보았습니다.

Section1. Compose 성능 최적화를 위한 Stability 마스터하기

엄재웅 | Android


Jetpack Compose 성능 최적화를 위한 Stability 이해하기

  • 화면을 그린 후 다시 그려야 하는 상황에는 recomposition ( 입력값이 실시간 변화하는 것 )
  • 매개변수 stable vs unstable
  • 람다식에서 외부에서 참조하는게 없다면 무조건 stable Type
  • compose compiler metrics 를 통하여 최적화를 할 수 있음
@Composable
fun Profile ( 
	stable user : User,
	unstable posts:List<Ports>
)

👉🏻 Jetpack Compose에서 앱 성능에 영향을 미치는 Recomposition과 Stability에 대한 이해, Smart Recomposition의 작동 방식, Composable 함수의 안정성 추론 메커니즘, Composable 함수를 stable하게 만들기 위한 annotation 및 Strong Skipping Mode 등 Compose의 성능 최적화를 위한 다양한 방법들을 배울 수 있는 시간이였습니다.


Section2. 앱 성능 영혼까지 끌어올리기

배필주 | Android

안정성과 성능

서비스 비즈니스 성장과 성능의 상관 관계

성능 관리 핵심 요소

  • 응답성 ( 앱이 얼마나 빠르게 반응하는 지 )
  • 안정성 ( 크래시나 ANR 문제를 일으키진 않는지 )
  • 효율성 ( CPU, Memory , Battery , NetWork 자원을 얼마나 효율적으로 사용하는지 )

안정성 끌어올리기

  1. 어느 화면 또는 컨텐츠에서 발생했을까?
  2. 그 화면까지 어떻게 들어갈 수 있을까? ( 진입 경로 )
  3. 화면에서 유저가 마지막으로 한 동작 또는 마지막에 호출된 메서드는 무엇일까?
  4. 크래시가 발생하는 특정 기기 특성이 있을까?

CustomTrace 설정하기

  • 시간 분포도
  • 기록된 디바이스 속성 및 시간
  • CPU 사용량
  • 메모리 사용량
  • On Device
  • Network

우리 앱이 시작할 때까지 걸리는 시간

Firebase performance monitoring

  • Process Init - Activity.onCreate - Other stuff

이러한 과정을 거치는게 Firebase Performance monitoring 의 프로세스입니다.

Android에서 Performance Monitoring 시작하기  |  Firebase Performance Monitoring

🧑🏻‍💻 Baseline Profile 작동 방식

  • 기준 프로필 만들기

APK + Baseline Profile → Google play Store Upload → Cloud Profiles → Aggregate profile data → Google play Store

  • StartupBenchmark 결과

👉🏻 평균 15~16% 속도 향상

Baseline Profile 주의사항

  • Baseline Profil 을 생성하지 않아도 앱에 이미 포함되어있음

Macrobenchmark 작성  |  App quality  |  Android Developers


Section3. Compose UI 컴포넌트 설계와 테스트

김수현 | Android

  • Stateful vs Stateless 의 차이점과 명확한 구분법
  • Compose Preview ScreenShot Testing

Android code search ( aosp )

발표 자료

DroidKnights 2024 - Compose UI 컴포넌트 설계와 테스트

Github

wisemuji - Overview

기존 Android View에서는 화면(Activity, Fragment) 단위의 UI 테스트가 일반적이였으나,

Compose에서는 컴포넌트 단위의 UI 테스트를 할 수 있습니다.

테스트 가능한 컴포넌트를 디자인하는 방법을 실제 예시 기반으로 설명합니다.

이 과정에서 Compose보다 역사가 긴 React의 컴포넌트 설계 노하우를 참고합니다.


Section4. Github Actions로 효율적인 배포 환경 만들기

김태성 | General

SDLC 과정 일부

  • 구현
    • Kotlin Lint ( ktlint ) 일관된 코드 스타일 유지를 하기에 용이

      👉🏻 코드 리뷰 과정에서 불필요한 코드 제거

    • 유닛 테스트 자동화 - 일관된 품질과 코드 안정성을 사용하기 위해 사용

    • 빌드 검사 자동화

      👉🏻 시간 단축 , 반복 작업 제거

  • 테스트
    • Git tag 자동화 ( 테스트 용 APK , AAB 를 타팀에 배포하기에 용이 )
    • PR comment 자동화
    • Firebase Distribution 자동화
  • 배포
    • 마일스톤 생성

      문제 상황

      🤨  배포에 포함되는 PR이 무엇인지 알기 어려움

      진척상황이나 일정 가시화가 되지 않음

    • 릴리즈 브랜치 생성

    • Lint 검사

    • 앱 배포

    • 릴리즈 노트 생성

https://github.com/kts6056/droidknights-2024-github-actions

회고

그동안 개발자 생활(?) 을 하면서 실무하기에 급급하여 나름의 자기 합리화를 하면서 "이정도 노력이면 충분하지" 라고만 생각해왔었는데 오늘 행사를 참여하면서 다양한 시각과

세상에 숨은 고수는 많다. 아니, 사실 숨은게 아니라 내가 못본척 한걸지도..?

라고 느끼게 되었고 좋은 자극제가 되었습니다. 기회가 된다면 매년 참여하고싶고, 혹시나 참여를 안해보셨거나 참여를 고민하시는 분들은 꼭 한번이라도 참여해보셨으면 좋겠습니다 :)

etc.

드로이드 나이츠
https://www.droidknights.dev/

profile
앱개발을 사랑하는 개발자

0개의 댓글