microsoft

2 개의 포스트

Squad가 리포지토리 내에서 협업하는 AI 에이전트를 실행하는 방법 (새 탭에서 열림)

데이터베이스 설계에서 흔히 사용되는 ‘소프트 삭제(Soft Delete, 삭제 플래그 사용)’ 방식은 구현이 간편해 보이지만, 실제로는 시스템의 복잡성을 가중시키고 성능을 저해하는 안티 패턴으로 작용할 위험이 큽니다. 데이터의 이력을 관리해야 한다면 단순히 삭제 여부를 표시하는 컬럼을 추가하는 대신, 데이터베이스의 네이티브 기능인 시간 기반 테이블(Temporal Tables)이나 별도의 보관 아카이브를 활용하는 것이 데이터 무결성과 성능 측면에서 훨씬 유리합니다. **소프트 삭제가 초래하는 아키텍처의 복잡성** - 모든 조회 쿼리에 `WHERE is_deleted = 0`과 같은 필터 조건을 강제하게 되어 개발자의 실수를 유발하고 코드 유지보수 비용을 높입니다. - 소프트 삭제된 데이터가 테이블에 그대로 남아있어 고유 제약 조건(Unique Constraint)을 설정하기가 까다로워지며, 삭제된 값과 동일한 값을 재입력할 때 충돌이 발생합니다. - 외래 키(Foreign Key) 관계에서 '삭제된' 행을 참조하는 논리적 오류가 발생할 수 있어 참조 무결성을 보장하기 어렵습니다. **데이터 무결성 및 인덱스 성능 문제** - 삭제된 데이터가 인덱스에 포함되어 인덱스의 크기가 불필요하게 커지고, 이로 인해 메모리 효율성과 쿼리 스캔 성능이 점진적으로 저하됩니다. - 필터링된 인덱스(Filtered Index)를 사용하여 성능 저하를 방지할 수 있으나, 이는 데이터베이스 엔진에 추가적인 관리 부담을 주며 모든 상황의 근본적인 해결책이 되지 못합니다. - 비즈니스 로직과 데이터 보관 로직이 뒤섞이면서 데이터 모델의 의미가 모호해지는 결과가 나타납니다. **시스템 버전 관리 테이블과 트리거 기반의 대안** - SQL Server 및 Azure SQL에서 제공하는 시스템 버전 관리 테이블(Temporal Tables)을 사용하면, 애플리케이션 로직을 수정하지 않고도 삭제되거나 수정된 데이터의 과거 이

업무 자동화, 데이터 활용, (새 탭에서 열림)

마이크로소프트의 UX 디자이너 Jackie Chui는 디자인 과정에서 반복되는 번거로운 작업을 해결하기 위해 직접 Figma 플러그인을 개발하기 시작했으며, 특히 'Table Creator'를 통해 복잡한 테이블 제작 과정을 자동화했습니다. 그는 디자이너가 직접 도구를 만드는 것이 워크플로우 효율성을 높일 뿐만 아니라, 개발적 사고를 통해 디자인의 기술적 구현 가능성을 깊이 이해하는 데 큰 도움이 된다고 강조합니다. **테이블 제작의 고충과 자동화의 필요성** * 피그마에서 테이블을 제작할 때 셀 하나하나의 크기를 조정하고 수동으로 요소를 배치하는 반복 작업이 디자인 생산성을 저해하는 주요 요인임을 인지했습니다. * 단순히 정적인 표를 그리는 것이 아니라, 오토 레이아웃(Auto Layout)이 적용되어 유연하게 반응하고 수정이 용이한 테이블을 즉각적으로 생성하는 것을 목표로 삼았습니다. **기술적 도전과 스택 활용** * 전문 개발자가 아닌 디자이너로서 React와 TypeScript, 그리고 Figma API를 익히며 플러그인 개발에 도전했습니다. * 처음부터 완벽한 코드를 짜기보다는 Figma에서 제공하는 기본 플러그인 템플릿과 API 문서를 적극적으로 활용하여 핵심 기능 구현에 집중했습니다. * TypeScript를 도입하여 코드의 안정성을 확보하고, 복잡한 테이블의 행과 열 구조를 명확한 타입으로 정의함으로써 관리 효율을 높였습니다. **MVP 중심의 점진적 개발 방식** * 가장 먼저 해결해야 할 핵심 기능인 '기본 테이블 생성'에 집중한 최소 기능 제품(MVP)을 먼저 배포한 후, 실제 사용자들의 피드백을 바탕으로 기능을 확장했습니다. * 사용자가 셀의 스타일을 직접 정의하고 저장하여 재사용할 수 있는 기능을 추가해, 개별 프로젝트의 디자인 시스템에 최적화된 테이블을 만들 수 있도록 고도화했습니다. * 플러그인 커뮤니티의 반응을 실시간으로 살피며 성능을 최적화하고 UI를 개선하는 반복적인 이터레이션 과정을 거쳤습니다. **디자이너를 위한 개발 권장** * 자신에게 필요한 도구를 직접 만드는 과정은 단순한 업무 자동화를 넘어, 디자인 시스템의 논리적 구조와 데이터 흐름을 이해하는 데 큰 기여를 합니다. * 거창한 프로젝트보다는 현재 업무에서 겪고 있는 사소한 불편함을 해결하는 작은 스크립트부터 시작해볼 것을 권장하며, 커뮤니티의 오픈 소스 코드를 참고하는 것이 가장 빠른 학습 방법임을 강조합니다.