모듈화

그동안 모듈화에 대해 생각해본적이 없었는데 개선사항으로 모듈화가 나왔다.

페어와 나 둘 모두 모듈화를 해본적이 없어서 우선 왜 모듈화가 필요한지에 대해 이야기했다.

앱을 개발하다보면 네트워크를 처리하는 부분과 같이 프로젝트는 다르지만

항상 동일하게 구현하는 부분이 있었는데 그때마다 같은 코드를 반복해서 작성하고 있었다.

이를 모듈화하여 사용하면 코드를 반복적으로 작성하지 않고 모듈만 포함하면 된다.

수정또한 각각의 프로젝트를 수정하는것이 아니라 모듈을 작성한 곳에서만 수정해주면 되고 모듈의 교체또한 너무나 자유롭고 모듈화된 부분은 결합도가 낮아질 수 밖에 없어진다.

이야기를 하다보니 일상생활에서는 아주 많은 것들이 모듈화 되어 있다는 것을 알아차리게 되었다.

컴퓨터의 하드웨어 역시 모듈화되어있는데 왜 지금까지 소프트웨어의 모듈화에 대해 생각하지 않았는지 신기했다.

우선 네트워크 부분만 모듈화를 하였는데 앞으로 다양한 부분들을 모듈화 해볼 생각이다.

이미지 캐싱

이번 미션은 이미지를 서버에서 받아와서 처리하는 부분이 많았는데 개발한것을 직접 시연하다보니

앱의 사용성을 저하시키는 원인이 이미지라는 것을 알게되었다.

이미지의 크기가 크면 서버에서 받아오는 시간이 오래걸리고 이 때문에 사용자는 상대적으로 오랜시간을 기다려야

하고 같은 화면을 다시 들어올때마다 매번 같은 경험을 하게 된다.

그래서 이를 방지하기 위한 방법이 필요했고 그게 바로 이미지 캐싱이라는 것을 깨닫게 되었다.

우리는 한번 서버에서 받아온 이미지는 메모리에 올려두어 다시 접근하게 되면 서버에서 받아오지 않고

메모리에서 바로 이미지를 받아와 앱의 사용성을 높이도록 만들었다.

하지만 이런 방법도 문제가 있었는데 이미지를 메모리에 계속해서 올려놓으면

앱을 사용할수록 메모리에 이미지가 점점 많이 올라가게되어 메모리 사용량이 기하급수적으로 커지게 되어

메모리 용량부족으로 인해 앱이 죽게 되었다.

이를 해결하기 위해 메모리에 올라갈 수 있는 용량을 제한했고 해당 용량이 넘어가면 디스크를 이용하여

캐싱 할 수록 있게 만들었고 설정한 메모리 용량이 가득 찼을 때 FIFO 방식으로 메모리에서 디스크로 내려가게 만들었다.

그동안에 이론으로만 공부했던 CPU알고리즘이나 프로세스 알고리즘과 같은 내용들이 왜 필요하게 되었는지

더욱 실감할 수 있었다.

그룹 프로젝트 팀 구성하기

그룹프로젝트에 대한 가이드가 나왔다.

그룹프로젝트 가이드

지난 기수까지는 iOS캠퍼끼리 그룹프로젝트를 진행했다고 알고있었고 우리 또한 그렇게 진행되는 줄 알았으나

이번에는 백엔드 파트의 캠퍼와 함께 팀을 구성하여 그룹프로젝트를 진행하게 된다고 알려주셨다.

전혀 예상하지 못했기에 다들 당황한 눈치였다.

같은 부스트캠프 8기 기수이지만 iOS파트를 제외한 다른 파트의 캠퍼들과는 교류가 전혀 없었기 때문이다.

다들 그룹 프로젝트를 완성도 있게 잘 하고 싶은 마음이 큰데

아무런 정보가 없는 백엔드 파트의 캠퍼를 구하는 것이 어려울 것이라 생각했기 때문이다.

물론 백엔드 파트의 캠퍼들도 동일한 생각이였을 것이다.

멤버십 5주차에 와서 FE와 BE로 나누어지기는 했어도 챌린지 때부터 같은 웹 파트이고 사람이 많아도

어느정도 교류가 있다보니 웹 프론트엔드의 팀이 가장 먼저 완성되었다.

감사하게도 한 캠퍼분이 RIBs와 Tuist를 사용한 모듈화를 사용해 같이 그룹프로젝트를 해보자고 먼저 제안해주셨다.

Architecture의 끝판왕이라고 생각되는 RIBs와 모듈화 모두 나에게는 큰 도전이라고 생각하여 수락했다.

우리는 백엔드 팀원을 구하기 어려울 것 같다라는 생각이 들어서 우선 iOS 팀원을 빠르게 확정하기로 했다.

iOS 팀원은 2-3명으로 결정할 수 있었는데 우리는 서비스가 큰 앱을 만드는 것을 목표로 했기에

한명을 구해보고 안된다면 2명이서 진행하기로했다.

 

 

우리팀의 팀원 모집공고

 

공고를 올리고 얼마되지않아 iOS 캠퍼분과 백엔드 두분에게서 연락이 왔다.

팀을 구성하기 전에 다같이 모여서 도전적인 목표로 생각하는 것이나 각자의 셩격들을 확인했는데

다들 좋은 사람이고 모두 잘 맞는것 같아 그대로 팀을 구성하기로 했다.

실력이 모자랄수도 있겠지만 6주동안 다같이 성장할 수 있으면 좋겠다.