본문 바로가기
취미/컨퍼런스

그 서비스가 운영되는 법 (가애KAAE) - Flutter In Production Extended Seoul

by WooHey 2025. 1. 16.

본 게시글은 Flutter in Production 컨퍼런스 참여 후 작성한 글입니다.

Flutter In Production Extended Seoul 컨퍼런스 후기

 

 

 

들어가며..

이번 세션은 가애(KAAE)님이 발표를 준비해주셨다.

가애님은 원래는 IoT(사물인터넷)을 하고 싶었는데.. 어쩌다보니 커머스를 하고 계시다고 했다.

 

아 그리고 이번 발표가 조금 수난시대였다. (ㅋㅋ)

발표를 할 시간대가 딱 해가 저물기 시작한 시간 때라서 설명을 하려고 PPT를 보는 순간 밖의 햇빛이 쫘악~~

진짜 눈을 못뜰 정도긴 했다.

 

또 긴장을 하신건지 아니면 뭔가 목이 메이는건지 잘 모르겠지만, 목소리가 덜덜덜 떨렸다.

본인도 그걸 아셔서 몇 마디 하다가 잠시 쉬고, 몇 마디 하다가 물 마시고..

또 그리고 막 '저 목소리 너무 떨리죠~' 거리시고ㅋㅋ

이런 모습들이 되게 웃기면서 오히려 현장 분위기를 풀어주는 역할을 했다고 생각했다.

 

아까 긴장을 한건지 잘 모르겠다고 한 이유가,

떨리는 목소리에 비해 발표 내용은 개인적으로 잘 전달되었다고 느꼈기 때문이다.

 

나는 개인적으로 이번 세션과 같은 형태의 구성을 가진 발표를 선호하는 편이다. (실제 서비스 운영 썰들..)

실제 서비스 운영 당시에 겪었던 어려움들, 도움이 많이 되었던 지식 또는 라이브러리들 소개 등

운영에서 우리가 겪는 내용이 많아서 그런가 더욱 몰입이 된 느낌이었다.

 

 

 

링크맘 소개

먼저, 가애님이 개발 중이고 현재 운영되고 있는 서비스를 소개해주셨다.

 

육아와 관련된 서비스다 보니까 안전 관련 문제를 굉장히 중요시 관리하고 있고, 

인증이라든지 또는 아이를 양육하는 과정에서 발생하는 리스크를 줄이기 위해 

투약 의뢰서라는 정확한 지침을 서로 공유할 수 있게끔 하는 기능이 들어있다.

 

간략하게 기능 위주로 설명하자면,

이 서비스는 육아 토탈 케어서비스로, 부모와 시터를 연결하는 매칭 서비스이다.

Flutter 로 개발되어있고, 커뮤니티, 온/오프라인 쇼핑, 육이 꿀팁 등 다양한 기능을 제공 중이다.

 

 

 

패키지 100개?

링크맘 이라는 서비스를 운영하면서 사용 중인 라이브러리를 세어봤더니 100개가 넘었다고 했다.

이 프로젝트를 처음 시작할 당시, 8개월만에 앱 출시를 완료시켜야 했기 때문에  UI 개발 시간을 최대한 단축시키기 위해 써드파티 라이브러리를 많이 사용하게 되었다고 했다.

 

기타..

네이티브 연동이 불가피한 경우엔 method chnnel 을 사용했고, 

채팅은 MQTT로 개발되어 있다.

 

 

 

나를 살려준 라이브러리 2가지

1. jiffy

서비스 특성상 시간에 대해 정확하고 정교하게 다뤄야하는데, 이 라이브러리는 시간 비교 구문들을 명확하게 알 수 있도록 되어 있다.

때문에 추가적인 휴먼에러를 미연에 방지할 수 있었다.

Jiffy.parse('2021/01/19').format(pattern: 'MMMM do yyyy, h:mm:ss a'); // January 1st 2021, 12:00:00 AM
Jiffy.now().format(pattern: 'EEEE'); // Tuesday
Jiffy.now().format(pattern: 'MMM do yy'); // Mar 2nd 21
Jiffy.now().format(pattern: 'yyyy [escaped] yyyy'); // 2021 escaped 2021
Jiffy.now().format(); // 2021-03-02T15:18:29.922343

Jiffy.parseFromList([2020, 10, 19]).yMMMMd; // January 19, 2021

Jiffy.parseFromMap({
  Unit.year: 2020,
  Unit.month: 10,
  Unit.day: 19,
  Unit.hour: 19
}).yMMMMEEEEdjm; // Monday, October 19, 2020 7:14 PM

//  You can also use pre-set formats
Jiffy.parse('19, Jan 2021', pattern: 'dd, MMM yyyy').yMMMMd; // January 19, 2021
Jiffy.now().yMMMMEEEEdjm; // Tuesday, March 2, 2021 3:20 PM

 

 

 

2. rich_text_controller

정규식에 따라 텍스트 스타일을 각각 정의해야 할 때 유용하다.

 

 

 

 

이 서비스를 운영하는 법

타 서비스와 크게 다른 점은 없다고 했다.

실시간 모니터링을 통해 장애를 발견하거나 CS 채널로 인입되는 문의와 사용자들의 피드백 수집,

MMP(모바일 애플리케이션의 마케팅 성과 측정 및 분석을 전문적으로 하는 도구) 나

CRM(고객 데이터를 수집 및 분석하여 맞춤형 경험과 고객 만족을 높이는 시스템)

을 통해 서비스 품질을 높이고 있다.

 

추가로,

서버와의 통신에서 발생하는 에러는 slack 의 웹훅을 이용하고,

앱 배포는 fastlane 을 사용 중이다.

 

 

 

Fastlane 을 어떻게 사용하고 있을까?

Fastlane 의 가장 큰 단점은 각 플랫폼 폴더(android, ios, ...)로 이동해서 명령어 입력한 후 패키징을 해야 한다는 점이다.

이 방식은 각 플랫폼 별로 별도로 빌드를 해야 하고,

또 빌드에 실패하는 경우에는 몇 분, 몇 십분을 낭비하는게 너무 아깝게 느껴졌다고 했다.

그래서 각 폴더로 이동 후 플랫폼별 빌드를 자동화할 수 있도록 shell script 를 작성해서 한 번에 빌드될 수 있게끔 개선했다고 했다.

 

 

참고로, 아래와 같은 파이프라인을 사용 중이다.

 

android fastlane

  • upload playstore
  • firebase distribution
  • pub spec version setting
  • slack

 

ios fastlane

  • get cert
  • get provisioning
  • build number
  • app build
  • upload test filght
  • slack

 

 

 

2025년 목표

상태 라이브러리 바꾸기

현재 Provider 를 사용 중이라고 했다.

이유는, 앱 개발 초기에는 riverpod 이 출시 전?(이었나 출시 초기버전이었나..)이었기 때문에 Provider 를 사용했고,

그게 현재까지 이어왔다고 했다.

 

GoRouter 도입

딥 링크와 수동 URI 파싱에서 휴먼에러가 빈번히 발생했기 때문에 더욱 안정적인 라우팅을 구현하고자 한다.

 

테스트 코드 작성

현재 테스트 코드 없이 운영 중인 문제를 해결하여 품질 보증을 강화하려 한다.