피트니스 산업과 IT, 그리고 스타트업

IT 70

플러터 백그라운드 서비스 패키지 활용하기

Flutter로 앱을 개발할 때, 스톱워치나 타이머 기능을 구현하면 앱이 백그라운드에 내려가면서 멈추는 현상을 종종 겪게 됩니다. 이는 Dart로 작성된 코드가 UI 쓰레드에 묶여 있기 때문인데요. 실제로 플랫폼에 따라 UI가 백그라운드 상태로 전환되면 Flutter의 Timer나 Future도 중단됩니다. 이 문제를 해결하기 위해서는 백그라운드 서비스를 사용해야 합니다. 특히 flutter_background_service 패키지를 이용하면 Android와 iOS 양쪽에서 백그라운드 코드를 실행할 수 있는데, 오늘은 이 패키지를 통해 Flutter 앱에 백그라운드 서비스를 어떻게 적용할 수 있는지 단계별로 살펴보겠습니다. flutter_background_service 패키지란?flutter_back..

IT 2025.06.26

플러터, 구글에 배포할 때 주의할 점

Flutter로 개발한 앱을 구글 플레이 콘솔에 배포하려면, 사소해 보이지만 놓치면 크게 막히는 여러 가지 요소들을 사전에 체크해야 합니다. Android App Bundle(AAB) 업로드나 패키지 이름, 서명 관련 설정이 잘못되면 빌드가 거부되거나 이전 버전으로 업데이트가 불가할 수 있어요. 특히 협업 중이거나 CI/CD를 사용하는 프로젝트라면, 모든 설정의 일관성이 핵심입니다. 이 글에서는 세 가지 중요한 배포 포인트—버전 관리, 서명 & SHA‑1, 패키지 이름—을 중심으로 설명드릴게요. 버전 코드 & 이름 관리구글 플레이는 AAB 또는 APK의 버전 코드(versionCode)가 중복되거나 낮아지면 업로드를 막습니다. 앱 업그레이드가 원활히 이루어지려면 versionCode는 반드시 이전 버전..

IT 2025.06.24

DUNS 발급 및 조회 방법

애플 혹은 구글의 개발자 조직 계정을 등록할 때, DUNS 번호는 필수입니다. DUNS 번호는 던앤브래드스트리트(D&B)에서 발급하는 기업 식별용 9자리 고유 코드로, 특히 애플의 경우 이를 통해 조직의 “법인체 상태”를 확인합니다. 구글 역시 조직개발자 계정에서는 이 번호를 요구하며, 이를 통해 기업의 신뢰성과 법적 실체를 검증합니다 . 많은 개발자들이 DUNS가 신청만 하면 바로 받을 수 있는 간단한 절차라고 생각하지만, 실제 발급 및 반영에는 시간이 걸립니다. 일반적으로 발급까지 2~5 영업일, 애플 또는 구글 시스템에 번호가 반영되기까지 추가 1~2 영업일이 소요되며, 따라서 발급 이후 바로 조직 계정 등록 진행은 권장되지 않습니다. DUNS 번호란?DUNS(D‑U‑N‑S) 즉, Data Uni..

IT 2025.06.23

flutter run과 flutter build의 차이는 무엇일까?

Flutter 앱을 개발하면서 가장 자주 사용하는 명령어 중 하나가 flutter run과 flutter build입니다. 하지만 이 두 명령어가 정확히 어떤 차이가 있는지, 그리고 각각 어떤 상황에서 사용하는 것이 적절한지 헷갈리는 경우가 많습니다. 특히 처음 Flutter를 접하는 개발자라면 둘 다 앱을 실행하거나 빌드하는 명령처럼 보여 구분하기 어려울 수 있어요. 이 글에서는 flutter run과 flutter build 명령어의 차이를 명확하게 짚어보고, 각 명령어가 어떤 목적에 최적화되어 있는지 실무적인 관점에서 설명드릴게요. flutter run은 개발용, 실시간 확인에 유리flutter run은 앱을 실행하고 디바이스나 에뮬레이터에 바로 올려주는 명령어입니다. 가장 대표적인 특징은 디버깅..

IT 2025.06.20

앱에서 회원탈퇴 기능 구현하기

앱 서비스를 운영하다 보면 ‘회원탈퇴’ 기능은 필수 요소 중 하나입니다. 특히 Google이나 Apple 같은 소셜 로그인을 사용하는 앱이라면, 단순한 로그아웃 이상의 처리가 필요해요. “탈퇴 후 다시 가입하면 되지”라고 생각하기 쉽지만, Supabase와 같은 인증 시스템에서는 그렇게 간단하지 않습니다. 한 번 가입한 이메일은 삭제되지 않는 이상 재사용이 불가능한 구조이기 때문입니다. 이번 글에서는 Supabase 기반의 Flutter 앱에서 회원탈퇴 기능을 어떻게 설계하고 구현할 수 있는지, 완전 삭제(Hard Delete)와 소프트 삭제(Soft Delete)를 비교하면서 현실적인 전략을 함께 정리해볼게요. 특히 인증 시스템과 데이터 보존 사이의 균형을 잡는 것이 핵심 포인트입니다. 회원탈퇴 기능..

IT 2025.06.19

Supabase Realtime으로 실시간 협업 구현

Flutter로 앱을 개발하면서, 실시간으로 여러 사용자 간의 정보를 동기화하는 기능이 필요할 때가 많습니다. 예를 들어 채팅 앱에서 메시지를 주고받거나, 공동 문서 편집 앱에서 누가 어떤 부분을 수정하고 있는지를 실시간으로 반영하는 등의 기능이 대표적이죠. 이러한 실시간 협업 기능은 전통적으로 구현이 까다롭고 복잡한 백엔드 설정이 필요한 영역이었습니다. 하지만 Supabase에서는 Realtime이라는 기능을 통해, WebSocket 기반의 실시간 데이터 스트리밍을 매우 손쉽게 구현할 수 있게 도와줍니다. 특히 Supabase는 PostgreSQL을 기반으로 하면서도 Firebase처럼 간단하게 다룰 수 있도록 설계되어 있어, Flutter 개발자에게도 매우 매력적인 선택지예요. 이 글에서는 Supab..

IT 2025.06.18

Firebase로 손쉽게 테스트 앱 배포하기

앱 개발을 진행하다 보면, 사용자에게 정식으로 출시하기 전 여러 번의 테스트가 필요해요. 기능을 하나 추가할 때마다 직접 빌드해서 테스터에게 전달하고, 설치 방법을 안내하고, 피드백을 받는 일련의 과정은 생각보다 번거롭고 반복적인 일이죠. 특히 Android와 iOS 양쪽을 모두 지원하는 Flutter 앱의 경우, 각각의 플랫폼에 맞는 빌드와 배포 방식까지 고민해야 하니 더욱 복잡하게 느껴질 수 있어요. 이럴 때 매우 유용한 도구가 바로 Firebase의 App Distribution입니다. TestFlight처럼 앱 마켓을 거치지 않고도 테스터에게 앱을 배포할 수 있고, Android와 iOS를 동시에 지원해 관리가 훨씬 간편하죠. 특히 Supabase처럼 Firebase 외의 백엔드를 쓰더라도 무관하..

IT 2025.06.17

바이브 코딩으로 앱 개발 하다가 겪은 병목들

앱을 개발할 때 가장 많이 듣는 말 중 하나는 “직접 만들어보면 안다”는 말입니다. 이번 프로젝트는 Flutter와 Supabase 조합으로, 백엔드 서버 없이도 앱을 구축할 수 있는 serverless 구조였고, 저는 이걸 오로지 바이브 코딩으로 만들어봤습니다. 즉, 큰 설계 없이 즉흥적으로 구조를 짜고 기능을 붙여가며, 문제가 생기면 즉시 해결하는 방식이었죠. 이러한 개발 방식은 빠르게 MVP를 만들어야 할 때는 매우 강력합니다. 하지만 역시나, 처음 겪는 문제에 대한 경험 부족은 병목이 되기 쉽습니다. 이번 회고에서는 전체 개발 기간 중 가장 많은 시간을 소비하게 만든 세 가지 병목 지점을 소개하려 합니다. 단순한 기능 구현보다도, 개발 환경이나 설정에서 시간을 허비한 부분들이 더 크다는 것도 깨달..

IT 2025.06.13

나의 챗봇에도 RAG 붙이기

요즘 들어 LLM 기반 챗봇이나 생성형 앱을 만들다 보면, 어느 순간 이런 고민이 찾아옵니다. “모델이 매번 모든 문서를 기억하지 못하는데, 어떻게 나만의 데이터를 참조하게 만들 수 있을까?” 바로 이 문제를 해결하는 대표적인 방법이 RAG(Retrieval-Augmented Generation)입니다. 말은 복잡해 보여도, 핵심은 간단해요. 모델이 문서를 “외우는” 대신, 그때그때 필요한 정보를 찾아서 함께 전달해주는 방식이죠. 마치 친구에게 질문할 때, “잠깐만, 이거 전에 봤던 문서 있어” 하며 파일을 꺼내 보여주는 것처럼요. 이번 글에서는 Flutter 앱을 Supabase 백엔드와 연결해, OpenAI API를 사용하는 기본적인 환경을 전제로 RAG를 어떻게 적용할 수 있을지 소개하려고 합니다...

IT 2025.06.12

시간대 혼동 없는 DB 설계

시간은 우리가 다루는 거의 모든 데이터에 영향을 줍니다. 특히 사용자 기반이 전 세계로 확장되는 앱이나 서비스에서는 ‘언제’라는 정보가 단순한 숫자를 넘어서 비즈니스 로직과 사용자 경험 전반에 직결되죠. 예를 들어 한국에서 게시글을 올렸는데 미국에 도착해서 보면, 내가 나중에 쓴 글이 먼저 보인다? 이런 현상은 생각보다 자주 발생하는 문제예요. 그 원인은 바로 시간대(Timezone)와 관련된 설계 이슈에 있습니다. 각 기기와 서버의 지역 시간(Local Time)이 다르면 시간 순서가 뒤바뀌는 문제, 즉 “시간의 역전” 현상이 생길 수 있어요. 그래서 이번 글에서는 DB와 시간 정보를 주고받을 때 시간대 혼동 없이 정확한 시간 순서를 유지하는 전략에 대해 알아보려 합니다. 지역 시간이 아닌 UTC 기반..

IT 2025.06.11

플러터, 텍스트 에디터가 필요하다면?

앱을 만들다 보면, 사용자가 텍스트를 입력하고 서식을 적용할 수 있는 텍스트 에디터가 필요한 경우가 많아요. 예를 들어 메모앱, 블로그 편집기, 콘텐츠 관리 시스템(CMS) 등에서는 단순한 텍스트 필드로는 부족하고, 글꼴 크기 조정, 굵게/기울임 등 서식 기능이 있는 리치 텍스트 에디터가 필요하죠. Flutter에서는 이를 위해 여러 가지 옵션이 있지만, 그중에서도 flutter_quill 패키지는 가장 강력하고 직관적인 WYSIWYG 편집기 중 하나입니다. 웹 기반의 Quill.js를 Flutter에 이식한 이 라이브러리는 모바일뿐 아니라 데스크톱, 웹에서도 동일한 사용자 경험을 제공하며, Delta라는 내부 포맷을 통해 서식을 효과적으로 관리할 수 있게 해줍니다. 이번 글에서는 flutter_quil..

IT 2025.06.10

Cursor 최근 업데이트에 대해 알아보자

코딩 보조 도구로 각광받고 있는 Cursor는 개발자에게 새로운 방식의 프로그래밍 경험을 제공합니다. 특히 AI 기반 코드 편집기와 통합된 다양한 기능 덕분에 많은 개발자들이 복잡한 작업도 더 빠르게, 더 정확하게 처리할 수 있게 되었죠. 2025년 5월 말과 6월 초에 각각 발표된 Cursor 0.50과 Cursor 1.0 업데이트는 그동안 Cursor가 어떤 방향으로 진화해왔는지 잘 보여줍니다. 이번 글에서는 이 두 버전의 주요 변경사항을 중심으로 Cursor가 어떻게 더 강력해졌는지를 정리해 보려 합니다. 특히 코드 리뷰 자동화, 멀티파일 코드 리팩터링, 배경 에이전트 기능, 그리고 개발자 경험의 진화 측면에서 어떤 점이 향상되었는지 살펴보겠습니다. Cursor 0.50Cursor 0.50은 개발자..

IT 2025.06.09

앱 서비스에 LLM 도입하기

최근 몇 년 사이, GPT를 비롯한 대형 언어 모델(LLM, Large Language Model)의 등장은 디지털 서비스에 새로운 가능성을 열어주었어요. 단순한 챗봇을 넘어, 고객 지원, 추천 시스템, 문서 생성, 데이터 요약 등 다양한 기능이 자연어 처리 기반으로 확장되고 있죠. 하지만 “우리 서비스에 LLM을 어떻게 붙일 수 있을까?“라는 질문에 막막함을 느끼는 분들도 많습니다. API를 연동해서 간단하게 써볼 수는 있지만, 진짜 서비스를 만들고 운영하려면 전략적으로 단계를 나누어 접근할 필요가 있어요. 이 글에서는 LLM 도입의 전체적인 로드맵을 난이도별, 단계별로 정리해보고, MVP나 스타트업 환경에서 현실적인 접근법은 어떤 것이 있을지 이야기해볼게요. API 연동부터 시작하기LLM 도입의 가..

IT 2025.06.02

플러터, 테스트 앱 배포하기

앱을 개발한 후 가장 중요한 과정 중 하나는 실제 사용자 환경에서 테스트하는 일이에요. 아무리 로컬에서 잘 돌아가더라도, 기기별 환경이나 운영체제 버전, 외부 네트워크 환경 등에 따라 전혀 다른 결과가 나올 수 있기 때문이죠. 그래서 테스트 버전의 배포는 필수 과정이에요. 특히 플러터로 개발한 앱은 하나의 코드베이스로 iOS와 Android 두 플랫폼 모두를 타겟팅하기 때문에, 각각에 맞는 배포 방식도 이해하고 준비해야 합니다. 이번 글에서는 iOS와 안드로이드에 각각 테스트 버전을 배포하는 방법을 단계적으로 정리해 드릴게요. TestFlight, Google Play 내부 테스트 채널을 중심으로 다뤄보겠습니다. Android 테스트 버전 배포플러터로 만든 앱의 안드로이드 테스트 배포는 비교적 간단한 ..

IT 2025.05.30

온라인 사무실에서 재택 근무하는 세상

“오늘도 출근은 했지만, 회사엔 안 갔어요.” 이 문장이 더 이상 낯설지 않은 시대가 되었습니다. 우리는 이제 ‘사무실’이라는 물리적 공간 없이도, 얼마든지 협업하고 일할 수 있는 환경을 만들어가고 있죠. 특히 코로나19를 계기로 본격화된 재택 근무 문화는 이제 단순한 비상 대응 수단이 아니라, 새로운 업무 문화로 자리 잡고 있습니다. 이런 변화 속에서 주목받는 것이 바로 ‘온라인 사무실’ 혹은 메타버스 기반 협업 공간입니다. 단순히 줌(Zoom)으로 회의만 하는 게 아니라, 실제 사무실처럼 공간을 갖추고, 팀원들이 아바타로 실시간 소통하며 일할 수 있는 형태죠. 그중에서도 많은 기업과 팀이 선택하고 있는 플랫폼 중 하나가 ‘ZEP’입니다. 이번 글에서는 메타버스가 어떻게 우리의 일하는 방식을 바꿔놓았는..

IT 2025.05.27

플러터, intl 패키지로 다국어 설정하기

앱을 만들다 보면 언젠가는 꼭 부딪히게 되는 요구사항이 있습니다. 바로 다국어 지원입니다. 한국어만 지원하는 앱이 아니라, 영어, 일본어, 스페인어 등 다양한 언어를 동시에 제공하는 앱을 만들고 싶어지는 순간이 오죠. 특히 글로벌 유저를 타깃으로 하는 서비스라면 앱의 첫 인상이 바로 언어에서 결정되기도 합니다. 그런데 언어가 바뀐다고 해서 앱 전체를 새로 만들어야 할까요? 다행히도 그럴 필요는 없습니다. 플러터에서는 intl이라는 공식 패키지를 활용해 비교적 간단하게 다국어 지원을 구현할 수 있습니다. 이번 글에서는 플러터에서 intl 패키지를 이용해 다국어 앱을 만드는 방법을 단계적으로 정리해보려 합니다. 개념뿐만 아니라 실제 예제 코드도 함께 제공하니, 여러분의 프로젝트에 바로 적용해 보셔도 좋을 거..

IT 2025.05.26

인증과 보안, 엑세스 토큰과 리프레시 토큰

현대의 대부분의 웹과 앱은 로그인 기능이 있습니다. 그런데 우리는 로그인 한 번 하고 나면, 일정 시간 동안 계속 앱을 사용할 수 있죠. 예를 들어 은행 앱에 로그인하고 나서 바로 끊기지 않고 다양한 기능을 이용하거나, 유튜브에 로그인해두면 매번 로그인하지 않아도 내 계정을 유지할 수 있습니다. 이런 동작의 핵심에는 바로 인증(authentication) 시스템과 보안 토큰(token)이라는 기술이 숨어 있어요. 사용자 정보를 서버에 매번 보내지 않고도 ‘이 사람은 인증된 사용자다’라는 것을 알려주는 역할을 합니다. 그중에서도 액세스 토큰(access token)과 리프레시 토큰(refresh token)은 특히 중요한 역할을 하죠. 하지만 처음 접하는 사람에게는 이름도 비슷하고 개념도 헷갈리기 쉬워서,..

IT 2025.05.23

데이터베이스를 잘 만들기 위한 기초 지식

처음 데이터베이스를 배우기 시작하면, 많은 사람들이 이런 생각을 하게 됩니다. “이거 그냥 엑셀이랑 비슷한 거 아냐?” 실제로 테이블이라는 형태로 행과 열이 나뉘어 있고, 각각 셀 안에 데이터를 입력한다는 점에서 보면 굉장히 비슷해 보입니다. 그러나 엑셀처럼 단순히 데이터를 나열하는 것과 정말 잘 설계된 데이터베이스를 구축하는 것은 완전히 다른 이야기입니다. 왜일까요? 그 이유는 데이터베이스가 단순히 데이터를 ‘저장’하는 공간이 아니라, 정확하게, 일관되게, 오랫동안 신뢰할 수 있는 방식으로 데이터를 다루기 위한 시스템이기 때문입니다. 사용자가 늘어나고 데이터가 많아질수록, 적절한 구조와 규칙이 없다면 정보는 금방 뒤엉기고, 시스템은 예기치 못한 오류로 불안정해질 수 있어요. 따라서 데이터베이스를 제대로..

IT 2025.05.22

플러터, 서버리스 앱을 만들 때 주의할 점

빠르게 프로덕트를 만들어야 하는 스타트업이나 사이드 프로젝트에서, 서버리스(Serverless) 아키텍처는 굉장히 매력적인 선택입니다. 서버를 직접 운영하지 않아도 되고, 확장성도 뛰어나며, 비용도 사용한 만큼만 내면 되니까요. 플러터와의 궁합도 꽤 잘 맞습니다. 하나의 코드베이스로 iOS와 Android 앱을 동시에 개발하면서, 백엔드는 Firebase, Supabase, AWS Amplify 같은 서버리스 플랫폼을 붙이면 손쉽게 앱 전체를 구성할 수 있어요. 하지만 막상 실제 서비스를 만들기 시작하면, “생각보다 어렵네?”, “이건 왜 이렇게 불편하지?” 같은 벽에 자주 부딪히게 됩니다. 서버리스 구조는 초기 진입은 쉬워 보이지만, 제대로 이해하지 않고 사용하면 데이터 설계부터 보안, 비용, 유지보수..

IT 2025.05.21

바이브 코딩의 한계는 백엔드와 보안

요즘 개발자들 사이에서 가장 많이 회자되는 키워드 중 하나는 단연 바이브 코딩(Vibe Coding)입니다. GPT나 Claude 같은 LLM(Large Language Model)을 옆에 두고, 복잡한 구조보다는 빠르게 구현하고, 빠르게 피드백 받으며 결과를 만들어내는 방식은 분명 혁신적입니다. ‘완벽한 설계보다 빠른 프로토타이핑’이라는 철학 아래, 기획자도 디자이너도 개발자가 될 수 있는 시대가 도래한 듯 보이죠. 하지만 이런 빠른 흐름 속에서도 조용히 질문을 던져야 할 지점이 있습니다.“그렇게 만들어진 서비스는 과연 안전한가?”“이대로 바로 실제 사용자에게 제공할 수 있을까?” 바이브 코딩은 분명 강력한 도구입니다. 그러나 그것이 모든 문제를 해결해주지는 않습니다. 오히려 일부 중요한 영역에서는 제..

IT 2025.05.20
반응형