들어가며

사이드 프로젝트에서 이미지 업로드 기능을 개발하고 있었는데, 특정 아이폰 기기에서만 간헐적으로 작동하지 않는 이상한 문제를 만났다. 맥북에서는 완벽하게 작동하는데 말이다. 결론부터 말하자면 원인은 생각보다 단순했지만, 해결 과정에서 꽤 많은 것들을 배울 수 있었다.

1. 문제 상황 파악하기

먼저 어떤 기기에서 문제가 발생하는지 체크해봤다.

맥북에서는 항상 잘 되는데, 아이폰에서만 문제가 생기는 전형적인 크로스 브라우징 이슈였다.

2. 원인을 찾아서

1. WebKit 버전 문제일까?

출처 : https://nsinc.tistory.com/142

출처 : https://nsinc.tistory.com/142

처음에는 iOS 버전마다 다른 WebKit 버전을 사용해서 생기는 문제라고 생각했다.

<aside> 📚 Webkit?

Webkit은 Apple에서 개발하는 웹 브라우저 및 운영체제에도 쓰이는 Safari 브라우저 엔진의 일종이다. 아이폰 기종에 따라 지원하는 iOS 버전이 다르고, 이에 따라 기기마다 Webkit 버전도 다를 수 있다.

Webkit은 Android, iOS 버전에 따라 다른 버전이 사용된다. 안두로이드는 예전에는 iOS의 Webkit엔진을 사용했지만, 최근부터는 자체 엔진인 Chromium기반의 Blink를 사용한다.

</aside>

아이폰 기기마다 iOS 버전이 다르고, 그에 따라 브라우저 엔진 버전도 달라서 발생하는 문제라고 추측했다. 하지만 이것만으로는 "왜 간헐적으로 작동하는가?"를 설명할 수 없었다.

2. 이미지 압축 과정의 문제?

우리 프로젝트는 업로드 전에 이미지를 압축하는 로직이 있었다. 그런데 팀원이 압축 전부터 업로드가 안 됐다고 하는 걸 보니, 압축과는 무관한 것 같았다.