윈도우 11 백그라운드 앱 관리
현재 내 라이트세일 리눅스 서버에서 express 로 만든 app을 실행시키면 이렇게 나옵니다. 서버가 정상적으로 켜졌고, 예상한대로 내가만든 API 에 대한 응답을 모두 정상처리를 해주고있습니다. 다만. 지금 내가 접속한 터미널을 꺼버리면 터미널 세션이 날아가면서 동시에 진행하여 내 exrpess API 서버도 종료가됩니다. 그렇다면. 서버를 운영하기위해 어딘가에 있는 PC에서 터미널을 켜놔야하는 것일까? 물론 아닙니다. forever 라는 도구를 사용해서 터미널을 종료해도 서버에 백그라운드 형태로 앱을 동작시킬 수 있어요.
생각의 전환
메모리 최적화 작업은 노력대비 효과가 미비하여 더 이상 진행하지 않기로 하였습니다. 대신 백그라운드 앱 종료시 메모리 최적화 대상에서 제외되는 방법을 찾기로 했고, 이를 위해 포그라운드 서비스를 실행시켜 보기로 하였습니다. 포그라운드 서비스를 실행시키게 되면 앱이 활성화된 앱과 우선순위가 같아져 백그라운드에 있더라도 종료될 가능성이 적어지게 됩니다. 아래는 어떤 블로거가 작성한 내용이니 참조하기 바란다. Foreground Service는 활성화된 액티비티와 동급의 우선순위를 가집니다.
그래서 시스템에 메모리가 부족하더라도 Android System 에의해 종료될 확률이 적습니다. Foreground Service는 상태 바(Status bar)에 알림을 표시해야합니다.
효과 및 확대
포그라운드 서비스를 이용한 최적화모드는 우리동네GS 앱에 기본기능으로 탑재되었고, 특히 안드로이드9 이하 버전인 경우 디폴드로 활성화하여 앱종료되는 현상을 미연에 방지하고 있습니다. 우리동네GS 앱 오픈이후 2022년말부터 2023년초 까지 지속해서 인입된 이슈들은 더이상 리포트되지 않고 있습니다. 이 기능은 앞으로 더 많은 서비스에 증가 적용할 예정입니다.
박성화 | 디지털서비스본부 > 모바일FO팀우리동네GS / GS 프레시몰 앱 개발을 담당프론트엔드 새로운 기술에 대한 관심이 많습니다.
React 구동시 서버 멈출 경우
이건 경험담인데 express backend 구동은 아무 문제가 없었으나, React frontend 서버를 구동하는데 서버가 멈추는 현상이 있었어요. 결론 부터말하면 서버메모리가 부족해서 발생한 현상이었다. 참고로 내 라이트세일 서버의 RAM 은 1GB. 리액트 빌드하는데. 리소스를 많이먹는구나. 처음알았습니다. . 아무튼. 아래 글을 참고해서 해결하면 됩니다.
포그라운드 서비스 셋팅
포그라운드 서비스를 실행시켜도 실제 서비스에서 별도 작업은 하지 않고, 실행만 시켜놓을꺼라 적용이 쉽고 간단한 라이브러리로 선택하였습니다. 라이브러리 AndroidManifest.xml 포그라운드 서비스 초기화 코드 서비스 실행종료 코드 안드로이드 9 버전에서만 보이는 설정 메뉴 추가 우리동네GS 최적화 모드 실행된 모습 포그라운드 서비스 실행후 앱 종료되는 현상은 더 이상 발생하지 않았습니다. 역시 예상한 것과 같이 활성화된 앱과 동일하게 취급되어 효과가 있었던 것으로 보입니다.
그래서 좀 더 열악한 환경에서 테스트 해보기로 하였고, 내가 생각해도 이건 심합니다. 싶을 정도의 테스트 생태계를 조성하여 테스트를 진행하였습니다. 역시 100% 막지는 못하는것 같다.
메모리 최적화
개발자로서 메모리 사용량 최적화는 필요한 작업입니다. 하지만 하드웨어 스펙과 플랫폼의 개선으로 인해 이와 같이 노력을 예전만큼하지 않고 점점 잊혀져 간 것 같다. 저거부 디바이스에서 앱이 백그라운드에서 종료되는 현상이 확인된 후 잊고 있었던 메모리 최적화의 중요성을 다시 느끼게 되었습니다. Flutter 환경에서의 메모리 사용량을 줄이기 위해, 메모리 캐시 제거, 백그라운드 디스플레이 제거, 프리로딩된 캐시 제거 등 여러가지 처리를 수행하였습니다.
하지만 현상은 동일하게 발생하였습니다. 나름 최적화 처리를 통해 메모리 사용량은 줄였지만, 백그라운드에 함께 존재하는 앱들중 다른 앱이 더 적은 메모리를 사용하고 있거나, 새롭게 실행되는 앱이 너무 많은 메모리를 필요하게 될 경우, 여전히 시스템은 메모리 확보를 위해 대조적으로 사용량이 높은 우리앱을 종료시킨으로 보입니다.
logs 파일
home.forever forever logs 파일 경로
로그 파일은 home 디렉토리 하위에 .forever 디렉토리 하위에 생성됩니다.
자주 묻는 질문
생각의 전환
메모리 최적화 작업은 노력대비 효과가 미비하여 더 이상 진행하지 않기로 하였습니다. 자세한 내용은 본문을 참고 해주시기 바랍니다.
효과 및 확대
포그라운드 서비스를 이용한 최적화모드는 우리동네GS 앱에 기본기능으로 탑재되었고, 특히 안드로이드9 이하 버전인 경우 디폴드로 활성화하여 앱종료되는 현상을 미연에 방지하고 있습니다. 궁금한 내용은 본문을 참고하시기 바랍니다.
React 구동시 서버 멈출
이건 경험담인데 express backend 구동은 아무 문제가 없었으나, React frontend 서버를 구동하는데 서버가 멈추는 현상이 있었어요. 좀 더 자세한 사항은 본문을 참고해 주세요.