KMP/CMP 마이그레이션, 정말 프로덕션에서 가능할까? - 키친보드 앱 마이그레이션 도전기
안녕하세요. 스포카 FE팀의 Android 개발자 김진우입니다. “Kotlin/Compose Multiplatform(이하 KMP/CMP) 마이그레이션, 정말 프로덕션에서 가능할까?” 이 질문에 대한 답을 찾기 위해 저희 팀은 키친보드 Android 앱의 KMP/CMP 마이그레이션에 도전했습니다. 그 과정에서 가장 큰 난관은 Compose Navigation의 한계로 인한 WebView 화면 상태 유실 문제였습니다. 이로 인해 마이그레이션 자체
AndroidArchitectureFrontendKotlinMobile
피그마 플러그인 만들어줘
오랜만에 인사드립니다. 스포카에서 제품 디자인을 하고 있는 김동환(Donny)입니다. 이전에 개인 블로그에 바이브 코딩으로 Swift 앱을 제작한 이야기를 공유한 적이 있었는데요, 이번에는 피그마 플러그인을 직접 제작하고, 업무에 적용한 경험을 나눠보고자 합니다. 매일 2~3시간, 총 3일 정도 걸려 완성했습니다. 사실 이런 단순한 통신과 Mapping을 다루는 플러그인은 이미 흔한 사례지만, 대부분은 TF 단위로 기획되고 만들어집니다. 그런
FrontendMobileToolsUX/UI
보법이 다른 B2B 디자인
안녕하세요, 스포카에서 제품 디자인을 하고 있는 김동환(Donny)입니다. 저는 이전에 콜드체인 이커머스와 O2O 매칭 서비스 등 B2C 제품 위주로 경력을 쌓아 왔고, B2B SaaS는 스포카에서 처음 경험했습니다. 이곳에서 제품을 만들며 디자이너로서 느낀 경험과 몇 가지 생각을 공유하고자 합니다. 비슷한 도메인이라도 데이터를 중시하는 조직이 있는가 하면, 직관을 더 선호하는 조직도 있을 것입니다. 사업 분야, 규모, 조직의 성향과 전략에 따
CultureMobileUX/UI
단지 권한 기능을 추가해달라고 했을 뿐인데(feat. 인증 기능 개선)
안녕하세요. 스포카 백엔드팀 프로그래머 남경호입니다. 개발자라면 누구나 오랫동안 미뤄두었던 과제가 하나쯤 있을 것입니다. 업무의 우선순위가 낮거나 긴급한 과제들에 밀려 지속적으로 백로그에 쌓여 있던 작업 말이죠. 최근 저희팀에서 왜 오랜 시간 미뤄두었던 인증 방식 개선 작업을 진행하게 되었는지, 그 과정에서 얻은 여러 경험을 여러분께 공유하고자 합니다. 배경 스포카 블로그를 꾸준히 보신 분이라면, 서버 언어 전환 이야기 글에서 JWT 관련 문제
BackendMSASecurityTools
식자재 품목 검색을 더 쉽게! 검색 엔진 도입과 개선
안녕하세요. 스포카 백엔드팀 프로그래머 이지민입니다. 스포카에서는 식당 점주분들이 식자재 주문을 더 편리하게 하기 위한 많은 노력들을 하고 있습니다. 그중에서도, 주문하려는 품목을 검색하여 원하는 품목을 빠르게 찾을 수 있도록 품목 검색 기능을 제공하고 있는데요. 검색 엔진 도입부터 지금의 검색이 되기까지의 과정들을 이야기해보려고 합니다. 도입 초기에는 검색 엔진에 대한 이해가 깊지 않아, 논리적인 의사결정보다는 다양한 테스트를 통해 더 나은
BackendData AnalysisSearch
스포카의 백엔드팀에서 코딩 컨벤션을 관리하는 방법
안녕하세요, 스포카 백엔드팀 프로그래머 남경호입니다. 개발자라면 누구나 한 번쯤 더 나은 코드를 작성하고, 팀의 생산성과 유지보수성을 높이기 위해 고민해 보셨을 겁니다. 중복된 코드를 줄이고, 가독성을 높이며, 테스트 코드를 꼼꼼히 작성하거나, 알맞은 변수명을 고심하는 과정은 모두 그런 노력의 일환이죠. 하지만 이런 개선 작업이 효과적으로 이루어지려면, 팀 전체가 공통된 코딩 기준을 공유하고 지키는 것이 무엇보다 중요합니다. 일관된 코딩 컨벤션
BackendCultureTestingTools
AI를 활용한 주문서 생성 자동화: 카카오톡 주문을 키친보드 주문으로
안녕하세요. 스포카 백엔드팀 프로그래머 남경호입니다. 최근 ChatGPT를 비롯한 생성형 AI가 주목받으면서 저희 스포카에서도 AI 스터디를 진행했습니다. AI에 대해 들어본 적은 있었지만, 실제로 접해본 적은 없어서 스터디를 통해 프롬프트 엔지니어링, RAG, 랭체인 등의 개념을 배우고 이를 어떻게 활용할 수 있는지에 대한 기초를 익힐 수 있었습니다. 이번 글에서는 저희가 AI를 어떻게 제품에 활용했는지 소개해 드리고자 합니다. RAG를 사용
AI/MLBackendRAG
Querydsl에서 Kotlin JDSL 으로
안녕하세요. 또다시 전환 이야기로 찾아온 스포카 백엔드팀 프로그래머 남경호입니다. (이번에는 제목을 다르게 지어봤어요.) 최근 저희 백엔드팀에서는 Querydsl을 Kotlin JDSL로 전환하는 작업을 진행하였는데요. Querydsl은 Spring Framework를 사용하고 계신다면 누구나 알고 계실 유명한 쿼리 빌더 라이브러리입니다. 한편 Kotlin JDSL은 2021년 라인에서 공개한 쿼리빌더 라이브러리입니다. 저희가 이렇게 유명한 라
BackendDatabaseKotlinSpringTools
발전하는 iOS와 Clean Swift Architecture
안녕하세요. 스포카 제품팀 iOS 개발자 박건우입니다. 🙂 스포카 iOS 플랫폼에서는 Clean Swift 아키텍처를 기반으로 키친보드와 키친보드 유통사 iOS 앱을 개발하고 있습니다. Clean Swift란, Uncle Bob의 클린 아키텍처를 iOS, MacOS 플랫폼에 맞게 적용한 형태의 아키텍처입니다. 이 글에서는 스포카에서 Clean Swift 기반으로 iOS 앱을 개발하며 겪었던 어려움과 이를 어떻게 개선하였는지에 대한 내용을 다루
ArchitectureMobileiOS
키친보드 안드로이드 앱 Jetpack Compose 도입기
안녕하세요. 스포카 제품팀의 안드로이드 개발자 김진우입니다. 드디어 이번에 키친보드 안드로이드 앱에 Jetpack Compose를 도입하게 되었습니다. 그동안의 Jetpack Compose 도입하기 위해 검토했던 부분과 소소한 팁들을 공유드릴 겸 기술 블로그를 올리게 되었습니다. 도입 배경 수년간 XML 기반의 Android 앱을 개발하면서 가장 불편했던 점은 빈번한 작업 컨텍스트 전환의 번거로움이었습니다. 기본적으로 XML 기반의 UI를 개발
AndroidMobile
기능 테스트 전환 이야기
안녕하세요. 키친보드 제품팀의 백엔드 프로그래머 남경호입니다. 2월에 작성한 청구/수납 서비스 개발기를 이후로 오랜만에 글을 작성하게 되었네요. 이번 글은 지난번과 같은 서비스에 대한 내용이 아닌 좀 더 기술적인 내용을 다루어 보려고 합니다. 혹시 2022년에 작성했던 서버 언어 전환 이야기 글을 기억하실까요? 저희 백엔드 챕터에서는 언어 전환을 하면서 테스트 코드 작성에 대한 숙련도 문제, 데이터 초기화의 불편함 등과 같은 여러 이유로 인해
BackendDevOpsPerformanceTestingTools
이벤트 로그 체계 구축 여정
안녕하세요. 스포카의 데이터 분석가 양현승(todd)입니다. 😄 키친보드 서비스(Android, iOS) 이벤트 로그를 새로 설계하게 된 과정을 공유하려고 합니다. 로그 설계의 필요성은 많이 느꼈지만, 경험이 없었기 때문에 어떻게 시작해야할지 막막하고 걱정이 앞섰습니다. 또한 이미 조직에 로그 체계가 있었기 때문에, 기존 로그 체계의 데이터를 새로운 체계로 이전하는 과정에서 데이터 무결성 및 기타 이슈들을 고려해야했습니다. 돌이켜보면, 동료들
AndroidData AnalysisDatabaseMobileiOS
청구/수납 서비스 개발기
안녕하세요. 키친보드 제품팀의 백엔드 프로그래머 남경호입니다. 엊그제 2023년을 축하했던 것 같은데 벌써 2월이 지나가고 있네요. 다들 느끼시겠지만, 시간이 참 빠른 것 같습니다. 작년 키친보드는 많은 것을 이루었고 바꾸었습니다. 정비기간을 통해 서버 언어를 전환하였고요. 기존에 제공하던 정리 서비스가 아닌 주문 서비스를 새롭게 런칭하였습니다. 그리고 도도 카트에서 키친보드로 서비스명을 변경하면서 저희 서비스가 전달하는 가치를 사용자가 좀 더
BackendDatabaseMobilePerformance
1년차 개발자의 훈수 두기
안녕하세요. 스포카 제품팀의 백엔드 프로그래머 이지민입니다. 어느덧 스포카에 입사한 지, 개발자가 된 지 1년이 되었습니다! 개발자 1년, 참 고생도 많이 하고 다사다난했던 것 같습니다. 그만큼 배운 점도 많기에 이 글에서는 1년 동안 스포카를 다니면서 신입 개발자로서 느낀 것들과 배운 점들, 그리고 질문받았던 내용들을 담아보려고 합니다. 1년 차 개발자가 번데기 앞에서 주름잡는다고 생각하시고, 동시에 개인차를 인지하시면서 재밌게 읽어주시면 좋
BackendCareerMobileTools
스포카에서 Kotlin으로 JPA Entity를 정의하는 방법
안녕하세요. 키친보드 팀의 백엔드 프로그래머 남경호입니다. 최근 Kotlin이 서버 언어로 주목받기 시작하면서 Kotlin + Spring으로 서버를 개발하는 케이스가 많아졌습니다. 그러면서 자연스레 Kotlin으로 JPA를 사용하는 사례 또한 많아졌는데요. 다만 Kotlin으로 JPA를 사용하다 보면, 정확하게는 Entity를 정의하다 보면 Kotlin의 언어적 특성과 잘 맞지 않는 부분을 많이 발견하게 됩니다. JPA 는 Java Persi
BackendDatabaseKotlinSpring
우당탕탕 주문서 개발기
안녕하세요. 키친보드 팀의 백엔드 프로그래머 남경호입니다. 최근 키친보드 팀에서는 정비기간을 마친 후 처음으로 제품 개발을 위한 프로젝트를 성황리에(?) 마쳤습니다. 약 7주간 진행했던 이 프로젝트는 키친보드가 제공하던 기존 기능과는 전혀 다른 성격의 기능을 제공하기 위한 프로젝트였습니다. 그러다 보니 개발할 내용도 많고 프로젝트 일정도 넉넉하지 않아 말도 많고 탈도 많았던 프로젝트였던 것 같습니다 ^^;; 아무튼! 이 글에서는 이번 프로젝트에
BackendDevOpsPerformanceTools
스포카에서 Jira를 활용하여 프로젝트를 수행하는 방법
안녕하세요. 키친보드 팀의 백엔드 프로그래머 남경호입니다. 팀원들과 원활한 협업을 위해서 많은 회사에서 협업 도구를 사용하고 있는데요. 스포카에서는 협업 도구로 Atlassian의 Jira Software를 사용하고 있습니다. 이 글은 사내에 프로젝트를 진행할 때 좀 더 원활하게 Jira를 활용 할 수 있도록 가이드를 작성한 문서를 옮겨적은 것입니다. 협업 도구를 활용하는 방법은 회사다마 다르고 정답이 따로 있지는 않다고 생각합니다. 스포카에서
BackendCultureDevOpsTools
테스트 자동화 구축 이야기
안녕하세요. 스포카 QA Leader 염주일입니다. 스포카 QA 팀에서 오픈소스 자동화 도구인 Appium을 사용하여 Mobile App 테스트 자동화의 첫발을 내디뎠습니다. 지금까지의 테스트 자동화 구축 과정에 관해 이야기해볼까 합니다. 테스트 자동화를 구축하려는 이유가 무엇인가요? 보통 아래와 같은 이점을 얻기 위해 테스트 자동화를 구축하려 하죠. 테스트 커버리지 확대 테스트 일관성과 신뢰성 확보 테스트 비용 절감 및 기간 단축 테스트 자동
CI/CDMobileTesting