Sellmate POS with Flutter

안녕하세요. 셀메이트 포스팀 장지은입니다. 이번 포스팅은 2026년도 상반기 셀메이트 개발자 컨퍼런스에서 연사한 내용입니다. Flutter로 포스 모바일 프로젝트를 운영하면서 생각하고 있었던 내용을 공유드릴려고 합니다. 이번 연사는 단순히 포스팀, 모바일 직무자들에 국한된 이야기가 아닌, 모든 분들이 겪고 있는, 또는 겪을 수 있는 이야기입니다. 포스팀이 어떠한 일을 하고 있는지 잘 모르는 분들이 많으셨습니다. 우리가 만들고 있는 포스는 오프라인 매장에서 매출을 일으킬 수 있는 수단입니다. 고객 주문을 결제하고, 주문 내역을 관리 및 오프라인 매장을 관리할 수 있는 시스템입니다. ...

2026-01-17 15:36 · 2 분 · 311 단어 · 장지은

AI 활용: 업계 활용 패턴과 실무 적용 전략

🚀 들어가며 AI는 이제 선택이 아닌 필수가 되었습니다. Microsoft, Google, JPMorgan Chase 같은 글로벌 기업들이 AI를 도입해 생산성을 10~20% 향상시키고, 프로덕션 버그를 60% 이상 줄이는 등의 성과를 내고 있습니다. 하지만 42%의 AI 프로젝트가 실패하는 것도 현실입니다. 이 글에서는 실제 사례를 통해 AI 활용의 성공 요인과 실패 요인을 분석하고, 2026년 AI 에이전트 트렌드를 살펴보며, 우리 팀이 어떻게 AI를 활용하고 있는지 공유합니다. ✅ AI 활용 성공 사례 💡 1. GitHub Copilot의 입증된 효과 GitHub의 공식 연구에 따르면 2,000명 이상의 개발자를 대상으로 한 설문 결과, GitHub Copilot 도입 후 다음과 같은 효과가 나타났습니다: ...

2026-01-16 14:30 · 8 분 · 1510 단어 · 셀메이트 개발팀

Vim motions with vscode

Vim? Vim Motions이 뭐지? Vim이란? Vim은 모드 기반 텍스트 편집기입니다. 여러 모드가 있지만 가장 많이 쓰는 3가지는 다음과 같습니다: Normal mode: ‘단축키’가 활성화된 상태 (기본 상태) Insert mode: 우리가 아는 일반적인 ‘메모장’ 상태 Command mode: VSCode의 Ctrl + P와 비슷한 느낌 Vim의 역사 Vim은 Vi iMproved의 줄임말로, 1991년 Bram Moolenaar가 Vi를 확장 및 개선하여 만든 편집기입니다. Vi는 1976년 빌 조이(Bill Joy)가 만들었습니다. 당시 컴퓨터는 GUI가 아닌 터미널로 소통했기 때문에 마우스 없이 키보드만으로 모든 작업을 수행했습니다. 심지어 방향키도 없던 시절이라 h, j, k, l 키로 커서를 움직였습니다. ...

2026-01-13 10:29 · 5 분 · 1038 단어 · 임준건

Global Backend Architecture

글로벌팀의 백엔드 아키텍처 설계 프로젝트 아키텍처를 객체지향 관점에서 설명하고, 각 레이어에 사용된 주요 디자인 패턴과 SOLID 원칙을 설명합니다. 📐 전체 레이어 구조 (Layered Architecture) «Interface»Router«Controller» Controller«Service» Service«Repository» Repository(CRUDBase 서브클래스)«DB» DB«Utils» Utils / Helpers호출요청 처리CRUD & 쿼리데이터 영속화로깅 / 예외 처리트랜잭션 관리공통 유틸 1. Interface Layer (Router) 책임 HTTP 요청을 엔드포인트로 매핑 사용 패턴 Adapter Pattern 외부 REST 인터페이스를 내부 서비스 호출 인터페이스로 “어댑트” SOLID SRP: HTTP 경로 매핑만 담당 2. Controller Layer 책임 요청 바인딩 (Pydantic DTO) 인증·인가, 유효성 검사 Service 호출 및 응답 변환 사용 패턴 Facade Pattern 복잡한 서비스 호출 흐름을 단일 메서드(액션)로 단순화 SOLID SRP, ISP (DTO·Service 인터페이스만 사용) 3. Service Layer 책임 비즈니스 로직 오케스트레이션 (예: 주문 생성 → 쿠폰 적용 → 재고 검증 → 결제) 트랜잭션 경계 설정 도메인 규칙 적용 사용 패턴 Service Layer Pattern (비즈니스 유스케이스 캡슐화) Specification/Builder (필터·페이징 조건 조립) SOLID SRP, DIP (추상 CRUD 인터페이스에 의존), LSP (서브클래스로 대체 가능) 4. Repository Layer (CRUDBase 서브클래스) 책임 순수 DB 엑세스 (create, get, get_multi, update, remove) 공통 쿼리 빌드 (filter_and_sort_builder, bulk_update) 연관 엔티티 부착 (attach_related) 사용 패턴 Repository Pattern (도메인 객체 컬렉션 추상화) Generic Repository (제네릭 기반 CRUDBase) Template Method Pattern (CRUDBase가 알고리즘 뼈대, 서브클래스가 세부 구현) SOLID OCP (기본 로직은 변경 없이 서브클래스로 확장), ISP 5. Utility Layer (Utils / Helpers) 책임 횡단 관심사 처리 (로깅, 트랜잭션 예외 처리 등) 모델 직렬화, 날짜 포맷 등 순수 함수 사용 패턴 Decorator Pattern @handle_db_errors, @transactional 등으로 메서드 전후 로직 분리 SOLID SRP, DIP (서비스/리포지토리 레이어에 직접 비즈니스 로직 혼입 금지) 🔑 SOLID 원칙 적용 요약 SRP (단일 책임) ...

2025-08-07 09:32 · 2 분 · 298 단어 · 조성배

MSA, 우리가 지향해야 할 방향

이 글은 셀메이트 개발자 컨퍼런스 D² 발표 내용을 바탕으로 정리한 포스트입니다. 안녕하세요. MSA에서 우리가 지향해야 할 방향에 대해 발표한 상품개발팀 김범수입니다. 최근 셀메이트에서는 결제 및 WMS 등 다양한 신규 프로젝트가 시작되었고,그 과정에서 기존의 모놀리식 아키텍처에서 벗어나 점진적으로 MSA 구조로 전환되고 있습니다. 아키텍처가 변화할 때 가장 중요한 것은팀 구성원 모두가 그 설계를 명확히 이해하고 공감하는 것입니다. 그리하여 이 시간에는 간단하게라도 MSA에 대해 이해를 해보고자 해당 주제를 선정하게 되었습니다. 좋은 설계란 무엇일까? 지난 컨퍼런스에서 헤드님께서는 “좋은 설계란 결국 팀 구성원 모두가 잘 이해할 수 있는 설계다” 라고 말씀하셨습니다. 이 말의 핵심은, 팀 전체의 명확한 이해가 있을 때 비로소 문제를 빠르게 발견하고, 효율적으로 개선할 수 있다는 데 있습니다. 대웅님은 이를 실현하기 위한 세 가지 요인을 강조하셨습니다. ...

2025-07-28 00:00 · 3 분 · 561 단어 · 김범수

과연 우리는 깨끗한가

과연 우리는 깨끗한가 모바일 포스와 함께하는 클린한 아키텍처 적용기 2025 하반기 개발자 컨퍼런스 - 유종욱 목차 주제를 선정하게 된 이유 아키텍처가 뭔가요? 유명한 아키텍처에 대한 간단한 소개 모바일 포스의 아키텍처 소개 개선 가능한 점 주제를 선정하게 된 이유 “우주에 변하지 않는 유일한 것은 ‘변한다’는 사실뿐이다.” — 헤라클레이토스(그리스 철학자) 끊임없는 변화 속에서 유연하고 유지보수 가능한 구조가 필요합니다. 아키텍처가 뭔가요? 프로젝트 요구 사항과 팀의 성장에 따라 앱을 확장하고 구성하며 디자인하는 방법 중요한 점 변화에 유연해야 한다 이해하기 쉬워야 한다 → 유지보수 시간이 짧아진다 유명한 아키텍처에 대한 간단한 소개 🧱 Layered Architecture 역할별로 계층을 나누어 관심사 분리, 유지보수 용이성, 테스트 효율성을 높이는 설계 ...

2025-07-19 21:03 · 4 분 · 786 단어 · 유종욱

상태관리

📖 개요 안녕하세요, 셀메이트 포스팀에서 프론트엔드 개발을 맡고 있는 양원준입니다. 이번 글에서는 사내 세미나에서 발표했던 프론트엔드 상태 관리 이야기를 해보려 합니다. 프론트엔드 개발에서 상태 관리는 필수적인 개념이지만, 막상 실무에서는 “언제, 무엇을, 어떻게” 사용해야 할지 여전히 많은 개발자들의 고민거리죠. 이 글에서는 상태 관리가 어떻게 발전해왔는지 를 중심으로 이야기해보겠습니다. 🏃🏻‍♂️ 상태란 무엇인가? 먼저, 상태란 무엇일까요? 상태란 어떤 시스템이나 객체가 특정 시점에 가지고 있는 정보의 집합을 의미합니다. 이 정보들은 시간이 흐르며 변하고, 그에 따라 시스템의 동작이나 UI도 바뀌게 되죠. ...

2025-07-19 07:54 · 6 분 · 1127 단어 · 양원준

도메인을 지키는 설계

🛠️ 도메인을 지키는 설계 이번 블로그에서는 상반기 동안 진행한 WMS 프로젝트에서 마주했던 문제들과 그 해결 방법을 공유하고자 합니다. 제가 정의하고 해결한 문제는 총 4가지인데, 4가지의 특징을 한데 모아보니 제가 공통적으로 고민했던 것은 “어떻게 하면 도메인을 지키는 설계를 할 수 있을까?” 였습니다. 여기서 말하는 도메인이란 비즈니스 로직을 의미하며 외부 인프라로 부터 독립된 소프트웨어가 해결해야 할 특정 비즈니스 문제나 상황을 의미합니다. 저는 이번 블로그에서 제가 도메인을 지키기 위해 어떤 고민과 노력을 했는지 공유 해보려고 합니다. ...

2025-07-18 14:07 · 6 분 · 1118 단어 · 정민창

SELLMATE는 안전한가?

📖 개요 셀메이트의 정보보호는 어떻게 진행되고 있을까요? 이번에는 셀메이트 개발자컨퍼런스 인프라/보안팀 두번째 세션으로, 사내에서 개인정보나 고객정보를 어떻게 보호하고 있는지에 대한 내용을 주제로 발표를 하게 되었습니다. 또한, 매년 진행하면서도 늘 쉽지 않은 해킹메일 모의훈련 사례를 통해 알 수 있듯이 아는 것만으로는 충분하지 않고, 매사 경각심과 보안의식이 필요하기 때문에 이런 부분에 대해서도 한번쯤 고민해보는 시간을 가져보려고 합니다. 모든 사람들이 볼 수 있는 블로그의 특성상, 사내 보안 현황을 자세히 소개할 수는 없지만 이 게시물이 정보보호에 대해 다시 한번 생각해보면서, 경각심을 가지는 데에 조금이나마 도움이 되었으면 좋겠습니다. ...

2025-07-18 13:53 · 3 분 · 513 단어 · 황인우

설계 시작하기

Intro 항상 설계에 대한 발표를 한번 해보고 싶었습니다. 그래서 이번에 설계에 대한 발표를 했는데 개인적으로 아쉬움이 많이 남았습니다. 시간이 없어 준비를 많이 못하기도 했고 (사실 블로그도 애기 재우고 새벽에 쓰고 있답니다.) 하고 싶은 이야기의 반도 하지 못한것 같습니다. 그래서 하고 싶었던 이야기를 좀 더 블로그를 통해 해보도록 할게요 팀이 설계한다. 팀장을 처음 하게된 날 부터 생각하는 팀의 이상적인 모습이 있습니다. 아마 개발자라면 한번 쯤 생각해 보았을 그런 팀이죠. 자유롭게 의견을 나누고, 바쁠때는 함께 고생하고, 서로 부족한 부분을 케어해주고, 기술적으로 성장하는 그런 팀이요. 그래도 요즘은 셀메이트 개발팀이 점점 그런 팀이 되어 가는것 같아 좋습니다. ...

2025-01-20 00:24 · 6 분 · 1124 단어 · 박대웅