본문 바로가기

728x90

전체 글

(104)
클린아키텍처 적용하기-03 몇가지 팁과 고민들 클린아키텍처 적용하기-02 테스트  이전 글에 이어서 마무리하는 글. Repository은 그저 중간자 역할뿐인가? 꼭 필요한가? 데이터 엑세스를 하는 Datasource와 UseCase를 연결하기 위한 adaptor 역할이라고 볼 수 있습니다. Datasource와 직접 연결해도 되는것을 불편하게 하나의 과정을 더 밟는게 아닌가 싶지만, 이는 데이터소스의 구체적인 구현 세부사항을 비즈니스 로직으로부터 숨길수 있게 해줍니다. 일관된 인터페이스를 제공해서 비즈니스 로직이 Datasource의 구체적인 구현에 의존하지 않도록 하는것입니다. 때문에 Datasource를 변경하거나 업그레이드 되어도 비즈니스 로직에 영향을 주지 않습니다. 또 데이터 소스로부터 받은 데이터를 애플리케이션이 사용하기 적합한 형태로..
클린아키텍처 적용하기-02 테스트 클린아키텍처 적용하기-01 개념과 흐름이해 이전 글에 이어서 클린아키텍처를 적용하고 테스트 코드를 어떻게 작성할 수 있는지, 코드를 보고 따라가면서 그 장점을 알아보겠습니다. 클린아키텍처를 적용하고 나니 테스트할때 용이하다는 말이 무엇인지 와닿게 되었습니다. 아래 조금 지루한 내용일테지만 차근 차근 봐주시길 바랍니다. 앱의 버전을 최신 버전과 비교하고 업데이트 필요여부를 확인하는 요구사항이 생겼습니다. 설치버전의 숫자가 현재 앱 버전보다 최신버전이 높은경우 팝업을 띄우고 강제 업데이트(앱스토어 이동)를 진행하고자 합니다. 최신 버전은 LatestVersionDatasource을 채택한 구현체가 서버로부터 값을 받아와서 반환하고 있습니다. protocol LatestVersionDatasource { fu..
지극히 주관적인 리팩토링 (이벤트로그는 어디에 넣어야하는가?) 회사 프로젝트를 진행하다보면 다양한 코드를 만나게 된다. 작성자의 의도가 분명한 코드도 있는 반면 어느정도 편리함과 타협하여 쉽게 작성한 코드도 보인다. 물론 지극히 내 주관적인 기준으로 판단했을때의 코드이다. 작성자의 분명한 의도를 내가 파악하지 못했을 수도 있다. 요즘 맞닥들인 문제는 내 스타일과 조직내 코딩컨벤션의 갭이 꽤 크다는 것이다. 내가 정답이라는건 아니지만 내가 보고 고쳐야겠다고 생각이 든 코드도 그리 좋아보이지는 않았다. 구성원이 여러명인 조직에 들어온 것은 또 처음이라 내가 적응을 못하고 있는것은 아닐런지, 스스로 생각해보기도 했다. 처음엔 꽤 혼란스러웠지만 이제는 적응이 되었고 어느정도 분위기도 파악되었다. 아래 부터는 내가 생각한 재구성이 필요한 코드가 어떤것이었는지 설명하면서 어떤..
클린아키텍처 적용하기-01 개념과 흐름이해 배경 최근 진행한 iOS프로젝트에 클린아키텍처를 적용했습니다. 이 글은 클린아키텍처에 대해 학습했던 내용을 복습하고, 실전에 써먹으면서 애매모호 했던 부분들을 나름대로 정리한 글입니다. 배우면서 적용한 첫 프로젝트이기 때문에 중간중간 잘못된 정보가 전달될 수 있으니 이상하다~ 싶은점은 댓글로 남겨주길 바랍니다. 진행했던 프로젝트는 iOS, Android 두 플랫폼에서 동시에 개발이 진행되었습니다. 모바일 아키텍처는 서로 비슷한 부분이 굉장히 많으므로 각 플랫폼 담당자가 아키텍처를 함께 논하고 비즈니스 로직을 맞춘다면 시너지가 있을거라 생각됐습니다. 화면단위로 쪼개어 각 화면에서 필요한 유스케이스를 함께 정의하고 플로우를 맞춘다면 플랫폼이 달라도 담당자끼리 건설적인 대화를 할수 있을거라... 그래서 저와 ..
조금은 이른 23년 회고 어느덧 12월이 되었다. 결혼한 지 벌써 2년이 다 되어간다는게 실감이 나질 않는다. 새로운 직장에 들어온 지도 일 년 하고도 5개월이 지났다. 시간이 참 빠르구나 싶다. 어떻게 일 년을 보냈는지 정말 정신없었던 것 같다. 상반기는 회사에 모든 열정을 쏟았고, 하반기는 내년 초 태어날 우리 아기를 기다리며 바쁜 나날을 보냈다. 23년에 들어서며 다짐했던 일들이 잘 지켜지진 않았다. 아직도 냉장고에 붙어있는 “올해의 다짐” 목록 중에는 해 낸 것보다, 게을러서 하지 못 한 일이 더 많다. 하지도 않을 일을 적어서 뭐하냐 싶지만, 꾸준히 뭔가를 이루려 하는 마음을, 초심을 잃지 않기 위해 내년에도 새로운 다짐을 적어서 냉장고에 붙여둘 계획이다. 이제 올해 내가 한 일들 중 잘 해낸 것이 뭐가 있는지 살펴보려..
[iOS] Sandbox App SandBox란 App SandBox란 커널 수준에서 강제 적용되는 맥 OS의 접근 제어 기술입니다. App이 손상될 경우, 시스템과 사용자 데이터의 손상을 억제하도록 설계되어있습니다. App Store에서 유통되는 App들은 모두 App SandBox를 적용시켜야만 합니다. App Sandbox는 각 앱마다 취약한 리소스에 대한 액세스를 제한함으로써 공격자로 인한 사용자 데이터의 도난, 손상 또는 삭제 또는 시스템 하드웨어 해킹에 대한 마지막 방어선을 제공합니다. 파일 시스템 격리: 각 앱은 고유한 디렉토리 내에 파일을 저장하고 액세스할 수 있습니다. 다른 앱의 파일에 직접 액세스할 수 없으며, 사용자의 개인 데이터를 보호합니다. 키 체인: 앱은 감성적이고 중요한 정보를 안전하게 저장해야 합니다..

728x90