본문 바로가기

전체 글

[Android] 코루틴은 어느 스레드에서 재개될까? 바로 직전에 작성했던 포스팅에서는 suspend 함수에 대해 자세히 알아보았는데요,이번에는 그럼 그 재실행이 어느 스레드에서 실행되는지 작성해보려고 합니다. 네트워크 응답은 OkHttp의 스레드 풀 어딘가에서 도착하는데, 우리는 그 결과로 UI를 그립니다.응답이 도착한 스레드에서 그대로 재개된다면 CalledFromWrongThreadException이 터져야 할텐데요 🤔 누군가 중간에서 스레드를 갈아타주고 있다는 뜻이겠죠?오늘의 이야기는 Dispatcher입니다. 🤔 Dispatcher, 이름 그대로 배차 담당Dispatcher는 코루틴이 어느 스레드에서 실행될지 배정하는 역할을 합니다.Dispatchers.Main // UI 스레드Dispatchers.IO // 네트워크·파일.. 더보기
[Android] suspend 함수는 어떻게 멈췄다가 다시 실행될까 코루틴에서 suspend 함수를 정말 자주 사용하는데요, 흔히 suspend 함수는 '멈췄다가 다시 실행된다' 라고 하죠그런데 '멈췄다가 다시 실행된다'는 것이 정확히 무엇인지 알고 있나? 하는 생각이 들었습니다. 스레드가 멈추는 건 아닙니다. 메인 스레드에서 suspend 함수를 호출해도 UI는 멀쩡히 돌아가니까요.함수는 분명 중간에서 멈췄는데 스레드는 자유롭게 다른 일을 하고 있고, 시간이 지나면 멈춘 그 지점부터 실행이 이어집니다. 함수 실행 상태는 원래 스레드의 콜 스택에 쌓이는 건데, 스레드가 떠나버렸다면 그 상태는 대체 어디에 보관되는 걸까요? 🤨 💭 suspend 함수 들여다보기먼저 간단한 suspend 함수를 하나 보겠습니다.suspend fun refreshToken(): Toke.. 더보기
[Android] Service는 어떻게 동작할까? : Started, Bound, 그리고 Binder IPC까지 Android에는 Activity, Service, BroadcastReceiver, ContentProvider라는 4대 컴포넌트가 있습니다.이 중 Activity는 매일 만지니까 익숙한데, Service는 어쩐지 "백그라운드에서 도는 무언가" 정도로만 알고 넘어가기 쉬운데요.이번 글에서는 4대 컴포넌트 중 Service에 대해 알아보려 합니다. 음악 앱을 만든다고 생각해보았을 때 재생 버튼, 앨범 커버, 가사 화면까지 열심히 만들었는데, 사용자가 뒤로가기를 누르는 순간 음악이 뚝 끊깁니다. 🤨 당연한 결과인데요. 재생 로직을 전부 PlayerActivity 안에 넣었다면, Activity가 종료되는 순간 음악도 같이 종료됩니다.하지만 사용자 입장에서 음악은 화면과 상관없이 계속 흘러나와야 하죠. 화.. 더보기
[Android] Refresh Token, 탈취당하면 끝일까? : RTR로 방어 레이어 쌓기 인증을 다루다 보면 자연스럽게 토큰 관리에 대한 고민이 생기는데요,Access Token은 수명을 짧게 가져가도록 하고 있지만, 만료 기간이 긴 Refresh Token은 보안 측면에서 고민이 됩니다. 만약 이 Refresh Token이 탈취당한다면? 공격자는 토큰이 만료될 때까지 정상 사용자인 척할 수 있게 됩니다,, 🤨그래서 오늘은 이 문제를 완화하는 대표적인 방식인 RTR(Refresh Token Rotation) 구조에 대해 정리해보려고 합니다. 🤔 RTR이란?RTR은 이름 그대로 Refresh Token을 회전(Rotation)시키는 구조입니다.기존 방식에서는 Access Token이 만료되면 Refresh Token으로 새 Access Token만 발급받았는데요.RTR에서는 재발급 요청.. 더보기
2026 Build with AI: Hands-on Campus 후기 AI를 활발하게 사용하고 있는 요즘, AI 덕분에 빠른 개발과 더 많은 의사결정을 하게 되어 좋은 점도 많지만개발자의 역할과 방향성, AI의 활용 방안 등에 대해 많은 고민이 들었습니다. AI가 이젠 나보다 코드를 더 짜는 것 같은데 개발자로서 난 어떤 역할을 해야할까?AI를 '의미있게' 활용하려면 어떻게 해야할까? 그러던 도중 좋은 행사를 발견하여 참석하게 되었습니다. GDG Campus Korea에서 주최하는 2026 Build with AI: Hands-on Campus 행사였고,AI 관련 세션들로 구성된 행사였는데 총 3개의 세션을 선택해서 들을 수 있었습니다. 각자의 경험을 토대로 AI 시대의 개발자에 대해 이야기하는 자리였는데, 좋은 인사이트들을 얻어온 것 같아 후기로 남겨봅니다 😊 행사 정.. 더보기
[AI] AI에게 어디부터 어디까지 맡겨야 할까? : Claude Code Hook 방어 레이어 설계하기 저는 현재 회사에서 Claude code를 메인으로 활용하고 있습니다.AI를 도입하며 명령어를 던지고 결과만 확인하는 흐름이 점점 자연스러워지고 있는 것 같습니다. 파일을 알아서 만들고, 코딩과 테스트를 알아서 돌리고, 커밋까지 알아서 해주는 과정이 당연해졌죠,, 🤨 다만 회사에서 AI 도입하며 팀원분들이 가장 걱정했던 부분이 AI가 스스로 git에 접근하여 확인되지 않은 코드를 커밋하고 푸시하는 것이었는데요, 수많은 테스트를 해보며 AI에게 자율을 준다는 건 편한만큼 위험도 같이 떠안게 되는 일이라는 것을 느꼈습니다. 가장 큰 문제는 "알아서"의 범위가 어디까지인지 사람이 명확히 알지 못한다는 것이었습니다. 그 안에 포함된 문제들은 `git push --force` 한 줄로 동료 작업이 통째로 사라지.. 더보기
[AI] AI로 스펙 누락 없는 개발 프로세스 만들기 : Claude MCP 활용기 개발을 하다보면 종종 이런 상황을 겪게 됩니다. "이거 기획에 없었는데요?""이 프로세스가 아닌데요?""이 케이스에서는 어떻게 동작해야 하죠?"... 결국 개발 도중에 요구사항이 추가되고, 설계를 다시 생각해보기도 하죠이런 경험을 겪다보니 시작 전에 요구사항을 분석하고 설계하는 단계에 대해 한 번 더 고민을 하게 되었습니다. 물론 설계 문서를 기존에도 직접 작성하고 있었지만, 개발 뿐만이 아니라 요구사항 프로세스에도 AI를 넣는다면? 그래서 이 과정을 Claude + MCP로 자동화 해본 경험을 작성해보려고 합니다! 🤓 MCP가 뭔데? MCP(Model Context Protocol)는 Claude가 외부 도구나 서비스에 직접 접근할 수 있게 해주는 프로토콜입니다.쉽게 말하면, Claude한테 "이.. 더보기
[AI] Amazon에서 만든 스펙 주도 개발 AI, Kiro 사용 후기 요즘 수많은 AI가 쏟아져나오고 있는 시대에 Amazon에서 만든 AI인 kiro를 사용해본 후기를 작성해보려고 하는데요,아무래도 chatGPT, claude, Gemini보단 비교적 덜 익숙한 이름일 것 같습니다. 저는 AWS에서 진행하는 교육에 참여하여 kiro를 활용한 AI-DLC 기반 개발을 통해 주어진 요구사항에 맞는 프로그램을 구현해보았습니다.이 과정 속에서 들었던 생각들을 기반으로 후기를 작성해보려 합니다. 🔎 AI- DLC란?우선 AI-DLC에 대해 짧게 설명을 하고 넘어가자면!AI-DLC는 AI-Driven Development Lifecycle의 약자로, AI를 개발 프로세스 전반에 통합한 새로운 개발 방식입니다. AI가 요구사항 분석, 설계, 코드, 테스트 생성까지 주도적으로 수.. 더보기