[Review] Green Developers 프로젝트 후기 - Bibbi
1. Bibbi 프로젝트
디프만 14기를 통해 Bibbi라는 가족 일상 공유 앱 프로젝트를 진행중입니다.
Bibbi는 바쁜 일상 속에서 하루 한 번, 자신의 일상을 담은 사진을 찍어 공유합니다. 그리고 다른 가족이 공유한 일상 피드에 사용자의 이미지로 생성된 리얼 이모지나 댓글을 남기면서 가족과의 소통을 보다 쉽게 활성화할 수 있도록 돕는 앱입니다.
프로젝트 진행 과정은 아래 깃허브에서 볼 수 있으며 현재 iOS는 1차 MVP 기능까지 완료하여 앱스토어에 출시한 상태입니다. 🎉
Bibbi BackEnd GitHub: https://github.com/depromeet/14th-team5-BE
Bibbi iOS GitHub: https://github.com/depromeet/14th-team5-iOS
Bibbi Android GitHub: https://github.com/depromeet/14th-team5-AOS
2. Ncloud 서비스 적용한 사례
1) 아키텍처
현재 Bibbi의 서버 아키텍처는 위와 같습니다.
저희는 비용 문제를 고려하여 서버는 한 개로 두어 관리를 하고 조회 성능 개선을 위해 Cloud DB For Redis를 도입했습니다. 또한 Bibbi에서의 사진 업로드 기능을 수행하기 위해 Object Storage와 CDN을 사용하고 있습니다.
2) Cloud DB for Redis를 이용한 조회 성능 개선
저희의 앱 특성 상, 많은 정보를 담은 데이터를 조회하는 경우가 빈번히 일어납니다. 이 과정에서 조회 성능을 높이면 좋겠다 생각하여 Redis를 도입했습니다.
Redis를 통해 캐싱을 할 때, 주로 2가지 사항을 고려해서 캐싱을 해야 합니다.
1. 조회가 빈번히 되는 데이터인가
2. 자주 변경되지 않는 데이터인가
Bibbi 서비스에는 가족 일상을 모아볼 수 있는 캘린더 기능이 존재합니다. 캘린더 조회 API는 한 달치의 데이터가 들어가 있는데 그 데이터는 특정 날짜의 가족 멤버의 대표 일상 썸네일 사진 주소와 가족 멤버들이 해당 날짜에 모두 일상을 공유했는지 여부를 담고 있습니다. 해당 캘린더 조회 API 응답 데이터는 하루에 많이 바뀌어 봤자 최대 가족 멤버의 수 만큼 바뀌면서 빈번히 조회되는 데이터입니다.
저희는 이 캘린더 조회 API 응답 데이터를 캐싱하여 응답 속도를 951ms에서 35ms로 줄여 조회 성능을 크게 개선했습니다.
현재는 캘린더 조회 API 응답 데이터만 캐싱하고 있지만 이후에 추가적으로 가족 회원 프로필 API 응답 데이터도 캐싱할 예정입니다.
3) ImageOptimizer를 이용한 섬네일 생성
이미지 I/O 비용은 일반적인 json 데이터 I/O 비용보다 많이 발생하며 Bibbi는 이미지가 주된 SNS 서비스입니다. 그렇기에 이미지를 원본 그대로 내려주기 보다는 최적화하기를 원했고 NCP에서 제공하는 ImageOptimizer를 도입하였습니다.
사용자가 캘린더를 조회할 때, 특정 날에 쓰인 일상 글의 대표 이미지 1개를 함께 반환합니다. 이 대표 이미지를 사용자에게 반환하기 전에 ImageOptimizer를 통해 원본 이미지를 섬네일 이미지로 변환하여 Object Storage에 저장하고 변환된 섬네일 이미지를 반환하여 이미지 I/O 비용을 효과적으로 줄였습니다.
3. Ncloud 사용 중 특히 만족했던 점과, 아쉬웠던 점
이번 Bibbi 프로젝트를 통해 Ncloud를 처음 이용해봤는데 대중적인 AWS보다는 Ncloud 서비스에 대한 레퍼런스가 확실히 적었습니다. 하지만 그만큼 Ncloud에서 제공하는 사용가이드가 상세하고 친절하게 적혀 있어 새로운 서비스를 도입해도 헤매지 않고 잘 적용할 수 있었기에 저는 충분히 만족했습니다. 그 외에도 제공하는 Ncloud 서비스 이용료도 합리적이라 생각하여 계속해서 이용하고 싶습니다. 👍
3. Green Developers 프로그램 참여 소감
토이프로젝트를 하게 되면 도입하고 싶은 기술이 있더라도 비용 문제로 포기하는 경우가 많은데 이번 Green Developers 프로그램을 통해 제공받은 크레딧으로 Ncloud 서비스를 사용하여 서버 비용 절감은 물론 Ncloud에서 제공하는 좋은 서비스를 이용할 수 있어 좋은 경험이 되었습니다!
이번에 NCP로 처음 서버 구축을 하면서 레퍼런스가 적어서 인프라를 구축할 때 어렵지 않을까 이런 걱정도 많았는데 생각했던 것보다 Ncloud에서 제공하는 가이드가 상세히 적혀 있어 오히려 AWS를 이용했을 때보다 더 쉽게 새로운 기술을 적용할 수 있어 프로젝트를 쉽게 진행할 수 있었습니다! 🙌