기본 콘텐츠로 건너뛰기

5월, 2024의 게시물 표시

AI와 함께 춤을.. 아니, 코딩을.. (5) - 에이전트 팀으로 컨텍스트 압축 해결하기

지난 포스팅에서 개발 환경을 모노레포로 통합 하여, 동일한 Claude 세션 안에서 앱과 서버들을 한꺼번에 개발할 수 있게 했다고 이야기했다. 덕분에 명세 동기화 문제나 연동 디버깅의 번거로움이 크게 줄었다. 그런데 이렇게 앱과 여러 서버를 하나의 세션에서 다루다 보면, 또 다른 효율 저하 요인이 생긴다. 바로 컨텍스트 사이즈 제약 이다. 컨텍스트 압축이라는 새로운 문제 요즘은 Max 요금제 기준으로 기본 1MB 컨텍스트를 제공해서 예전만큼 빡빡하지는 않다. 하지만 불과 두어 달 전까지만 해도 컨텍스트 크기가 지금보다 훨씬 작았다(그래도 다른 서비스보다는 컸다). 그래서 한꺼번에 많은 코드를 분석시키고 대화를 조금만 이어가면, 빈번한 컨텍스트 압축 이 발생하곤 했다. 컨텍스트 압축이 일어나면 대화의 맥락이 흐려지기 시작한다. 방금 전까지 이해하고 있던 내용을 다시 설명해야 하거나, 이미 정한 구현 방향을 잊고 다른 길로 가기도 한다. 모노레포로 프로젝트를 합친 직후에 이 문제가 두드러지게 나타났다. 해결: 에이전트 팀 구성하기 이 문제를 줄이기 위해 Claude Code가 지원하는 서브에이전트(Sub-agent) 기능 을 적극적으로 활용하기로 했다. 앱과 각 서버를 담당할 전문 에이전트를 만들고, 이들을 총괄할 팀 리더 에이전트 를 따로 두는 방식이다. 말 그대로 "에이전트 팀"을 꾸리는 셈이다. 페르소나 구성은 대략 이렇게 잡았다. 팀 리더 └─ 제품 전체 기획 / 각 개발자에게 업무 지시 앱 개발자 └─ 모바일 앱 개발에 능숙한 개발자 서버#1 개발자 └─ Node.js 개발에 뛰어난 개발자 서버#2 개발자 └─ Python 개발자 이렇게 담당 프로젝트의 특성에 맞춰 각 에이전트의 페르소나를 정의한다. 테스터 에이전트를 따로 두는 분들도 있는데, 나는 별도로 분리하지 않았다. 서브에이전트 생성은 Claude Code에서 프롬프트로 설정할 수 있고, 추가한 뒤에는 세션을 새로 ...

iOS Privacy Manifest(PrivacyInfo.xcprivacy) 설정 가이드 - Xcode 프로젝트 적용 방법

Privacy Manifest 요구사항 개요 Apple App Store는 2024년 5월 1일부터 배포되는 앱(신규, 업데이트 모두)에 대해서 Privacy Manifest 를 포함을 요구하고 있습니다. 아마 저를 포함하는 많은 개발자들이 이 사항을 가지고 머리를 싸매고 있지 않을까 생각이 됩니다. Privacy Manifest를 프로젝트에 포함시키는 것은 기술적으로 어렵지 않고 애플도 비교적 잘 설명된 문서들을 제공하고 있습니다. ( 참고1 , 참고2 ) 그리고, 이미 많은 글에서 이것에 대해서 설명하고 있습니다. 서드파티 SDK와 Privacy Manifest의 의미 저는 애플의 이러한 정책의 방향성은 훌륭하다고 생각합니다. 요즘 개인정보 관련한 정보 제공 요구가 나날이 강화되고 있는데, 앱 개발자 입장에서 내가 작성한 코드에 대해서는 그나마 알 수 있지만, 요즘과 같이 많은 서드파티 SDK 의존성을 바탕으로 앱을 개발하고 있는 상황에서 각 서드파티 SDK에서 수집되는 정보를 일일이 파악할 수도 없으며, 이들이 이 정보를 이용하는 목적은 더더욱 알기가 어렵기 때문입니다. 그리고, 단순 "수집"이냐 "추적"이냐 까지 파고 들려면, 용어도 어렵고, 정책적 부분이 판단도 애매한 상황에서 개발자가 자신이 개발한 앱에서 수집하는 개인정보에 대해서 모두 제공하는 것은 불가에 가깝습니다. 그래서 앱 스토어에서 "앱이 수집하는 개인정보" 섹션을 채우라고 했을 때는 개인정보를 수집할 것 같은 서드파티들의 기술지원 페이지를 참고해서 항목들을 정리해야하만 했습니다. 이번 애플 정책 요구에서 눈에 띄는것은 각 서드파티에서 제공하는 SDK에도 Privacy Manifest를 포함하도록 요청하고 있습니다. 이로 인해서 개발자는 내가 개발하는 코드에서 수집되는 정보에 대해서 좀 더 집중할 수 있습니다. 다만, 오래된 서드파티 SDK 버전을 사용하는 경우에는 부득이 업데이트를 하거나 대안을 찾거나 하는 피곤한 상황이 생...

수경재배 상추 47일차 - 최종 수확량과 경제성 분석

상추 추수 이후 성장 현황 지난번 상추 추수 이후 많이 자랐습니다. 상추 잎을 따내고 나면 위 사진과 같이 앙상한 상추들이 보입니다. 역시 빛이 약하다보니 수경재배기의 LED 빛을 잘 받는 가운데 부분 이외의 포트에서 자라는 상추는 웃자람이 심하여 제대로 서 있질 못하게 되어 여기에서 더 키우는 것은 한계인 것 같아서 웃자람이 덜한 가운데 3포트만 남기고 나머지는 모두 따냈습니다. 12포트 50일 수확량과 경제성 분석 50일 약간 안되는 기간동안 12포트에 씨를 심어서 따낸 상추잎은 마트에서 소분해서 파는 봉지기준으로 4~5봉지 정도 되는 것 같습니다. 수경재배기 구입비용, 전기요금 등을 감안하면 한두번 키워서는 경제성이 형편없습니다. 그리고, 향후 투입될 양액 구매비용과 그로잉스펀지(수경재배기의 각 포트에 끼워서 상추를 키워내는 배지) 구매비용등을 감안하면... 장기적으로도 경제성은 없을 듯 합니다.. 그냥 재미로... 다음 재배 계획 새로 주문해 놓은 그로잉스펀지가 도착하면 12포트 대신 4~5포트만 심어서 키워서 웃자람이 덜하게 키워볼 예정입니다. 이 글은 이번 재배에 대해서는 마지막 포스트입니다..

[iOS/Flutter] CocoaPods CDN trunk URL SSL 인증서 오류 해결 방법

문제 배경 - Privacy Manifest 대응 중 발생 Apple에서 Privacy manifest 파일 추가를 요구하여 이와 관련된 수정 작업을 진행하고 있습니다. 이 요구에는 내가 개발한 소스 뿐만 아니라 서드파티 SDK를 사용하는 경우에 해당 서드파티 SDK도 privacy manifest을 포함해야 한다라는 요건이 있어서, 개발중인 프로젝트에 privacy manifest를 추가해야 하고, 서드파티 SDK도 privacy manifest를 포함한 버전으로 업데이트를 해야만 하게 되었습니다. NSUserDefaults 만 사용하더라도 privacy manifest 포함해야 하기 때문에 상당히 많은 서드파티 SDK를 함께 업데이트 해야한 합니다. 그리고, 서드파티들도 최근에 이것을 지원하고 있기 때문에 거의 최신 버전을 사용해야 합니다. 그리고, 이로 인해서 부득히 빌드 체인도 함께 업데이트 해야하게 되었습니다. 더더욱 flutter로 안드로이드도 함께 개발하다보니 안드로이드 빌드 체인도 함께 업데이트해야 해서 일이 커졌습니다. 오류 내용 - CDN trunk URL SSL 인증서 오류 업데이트를 위한 작업중 pod install 과정에서 아래와 같은 오류가 발생했습니다. CDN: trunk URL couldn't be downloaded: https://cdn.jsdelivr.net/cocoa/Specs/0/3/5/Firebase/10.25.0/Firebase.podspec.json Response: SSL peer certificate or SSH remote key was not OK 오류 메시지에 포함된 URL을 웹 브라우저로 접속해보면 인증서가 만료된 상태입니다. 뭔가 저장소 관리에 문제가 있는 모양입니다. 오류 내용으로 검색해보면 주기적으로 문의가 올라오는데, 된다고 하는 방법으로도 안되는 걸로 봐선 발생하는 경우에 발생하는 원인이 여러가지 일 수도 있는 것 같습니다. 해결 방법 - Podfile에 저장소 명시적 지정...