Facebook이 iOS 앱을 완전히 재작성한뒤 10년이 지나 어떻게 아키텍처가 달려져 왔는지를 정리한 글입니다. 현재 다른 iOS 앱과는 꽤 다른 아키텍처를 가지고 있는데 그 이유도 같이 정리되어 있고 현재는 iOS도 많이 발전되어서 지금 보면 이상한 모양일 수 있지만 플랫폼이 발전될때까지 사용자가 많은 서비스가 문제를 고치지 않고 기다릴 수는 없기 때문에 직접 수정을 하면서 이런 식의 변화가 이뤄지는게 한편으로는 자연스러워 보입니다.
- 2012년 iOS를 재작성함
- 2년 뒤인 2014년 안정성에 문제가 발생해서 기존 설계를 지속할 수 없다는 판단을 함
- React의 아키텍처를 리서치했으나 당시에 Apple SDK에는 선언적인 UI가 없었음(지금은 있음)
- 직접 선언적 UI 프레임워크인 ComponentKit을 만들어서 공개했고 성능도 50% 향상되었다.
- 2015년이 되자 사용자가 증가하면서 다시 느려지기 시작했고 동적으로 코드를 로드할 수 있는 Dylibs를 도입해서 느려지는 문제를 해결함
- Dylins를 너무 많이 사용해서 초기 부팅이 오히려 느려졌고 아키텍처를 재설계해야 할 때가 되었음을 느낌
- 2017년 Dylibs 문제를 해결하기 위해 빌드 시스템인 Buck을 도입
- 2018년 Buck을 통해 코드 제너레이션을 할 수 있게 되어 런타임 기반의 앱 모듈 시스템이 됨
- 2020년 Swift가 대세가 되었지만, C++ 기반이었던 페이스북의 iOS 앱은 Swift와 궁합이 좋지 않았기 때문에 위에서 Swift를 쓸 수 있도록 아키텍처를 변겅함.