2025. 5. 18. 21:21ㆍ카테고리 없음
Articles
데이터 엔지니어링에서 스키마 진화를 이해하기
이 글에서는 데이터 엔지니어링에서 중요한 개념인 스키마 진화(Schema Evolution)에 대해 설명하고 있습니다. 데이터의 구조는 시간이 지남에 따라 변할 수 있으며, 이를 관리하고 처리하는 방법에 대해 다룹니다. 현대 데이터 시스템은 데이터의 변화를 수용할 수 있도록 설계되어 있어 기존 시스템의 경직성을 극복합니다.
- 스키마 진화는 데이터 파이프라인이나 데이터베이스가 데이터 구조의 변화에 적응할 수 있는 능력을 말합니다.
- 전통적인 시스템에서는 구조의 변화가 문제를 일으키기 쉬웠지만, 현대의 데이터 레이크와 델타 레이크 기반 시스템은 이런 변화를 원활하게 처리합니다.
- 실시간 데이터 스트리밍과 변화하는 데이터 소스에 대응하기 위해 스키마 진화의 중요성이 커지고 있습니다.
개요
데이터 엔지니어링은 오늘날 많은 양의 데이터 변화를 실시간으로 관리하고 처리할 수 있는 능력이 큰 장점입니다. 그런데 여기서 자주 간과되는 것이 바로 데이터의 '스키마(schema)'입니다. 스키마는 데이터의 청사진과 같은 역할을 하며, 이 스키마가 변경될 때 어떻게 대응할지가 중요합니다. 스키마가 변경되는 것은 불가피한 일이기 때문에, 스키마 진화(Schema Evolution)가 필요한 이유입니다.
스키마 진화란 무엇인가요?
스키마 진화는 데이터 파이프라인이나 데이터베이스가 시간에 따라 데이터 구조(스키마)의 변화를 수용할 수 있는 능력을 말합니다. 전통적인 시스템에서는 스키마가 고정적이기 때문에, 데이터 구조에 새로운 열을 추가하거나 데이터 유형을 변경하는 등 작은 변화에도 파이프라인이 중단되거나 데이터가 누락되는 등의 문제가 발생할 수 있습니다. 그러나 현대의 데이터 시스템, 특히 데이터 레이크(data lakes)나 델타 레이크(delta lakes) 기반의 시스템(예: Databricks, Snowflake)은 이러한 스키마 변화에 적응할 수 있도록 설계되었습니다.
스키마 진화의 중요성
스키마 진화는 여러 가지 이유로 중요합니다. 첫째, 데이터의 동적성입니다. 실시간 데이터 스트리밍이나 IoT 기기와 같은 다양한 데이터 소스는 지속적으로 변화하며, 이에 따라 데이터 구조도 변하게 됩니다. 둘째, 빠른 변화 속도입니다. 급격히 변화하는 환경에서는 데이터 파이프라인도 그에 발맞춰 빠르게 적응할 필요가 있습니다.
결론
스키마 진화는 데이터 엔지니어링에서 필수적인 요소로 자리 잡고 있습니다. 데이터의 변화에 능동적으로 대응할 수 있는 능력이 데이터의 품질과 신뢰성을 높이는 데 기여합니다. 따라서 데이터 엔지니어들은 스키마 진화의 중요성을 인지하고, 이를 통해 더 나은 데이터 관리와 분석 환경을 만들어 나가야 합니다.
Data Engineer Things
Understanding Schema Evolution in Data Engineering
AI 시대, 디자이너를 없애보려 했다
이 글은 AI 시대에 디자이너의 역할이 어떻게 변화하고 있는지를 탐구하며, 스스로 디자이너를 없애는 실험을 통해 시스템 설계의 중요성을 강조합니다. 저자는 반복적인 작업을 규칙과 시스템으로 자동화하며, 궁극적으로 AI가 디자인 작업을 맡게 될 것이라 전망하고, 디자이너는 더 이상 직접 디자인하기보다는 시스템을 설계하는 역할로 전환될 것이라고 주장합니다.
- AI 발전으로 디자이너의 직접적인 디자인 역할이 감소할 가능성이 있음.
- 규칙을 정의하고 시스템화하여 반복 작업을 자동화하는 실험을 진행.
- 디자이너는 시스템적 사고를 갖춘 설계자로서의 새로운 역할을 요구받게 됨.
- 토스는 내부에서 필요한 툴을 개발하여 효율성을 높이고, 디자이너의 생산성을 극대화하는 환경을 조성하고 있음.
개요
AI 시대가 도래하면서 디자이너의 역할이 어떻게 변화할지에 대한 고민이 많습니다. UI가 더 이상 필요하지 않거나, 로봇이 모든 일을 대신하는 상상이 펼쳐지면 디자이너는 어떻게 될까요? 이 글에서는 디자이너 없이 시스템이 제대로 작동할 수 있도록 하는 실험을 통해 보장하는 방식으로 디자이너의 미래를 탐구해보겠습니다.
시스템 구축의 시작
처음에는 반복되는 작업을 규칙으로 정의하는 것이 필요했습니다. 제가 맡고 있던 정산 업무는 여러 회사의 수수료 계산 방식이 달라 매번 같은 일을 반복하는 구조였어요. 그래서 공통된 규칙인 ‘구간별 수수료율’을 만들어 작업을 간소화했습니다. 이렇게 하면 매번 새로운 디자인을 만들 필요가 없었습니다.
규칙의 시스템화
그 후, 규칙을 시스템으로 발전시키는 단계로 나아갔습니다. 한 달 뒤, 프론트엔드 개발자가 저 없이도 UI를 만들 수 있는 모습을 보게 되었고, 이는 디자이너 없이도 시스템이 잘 운영될 수 있다는 신호였습니다. 다음 목표는 스펙을 작성하는 것조차 자동화하는 것이었습니다.
AI 활용 가능성 탐색
이제는 시스템이 잘 작동하자 AI에 맡길 수 있는 가능성도 생각하게 되었습니다. 현재 AI가 디자인 툴을 사용할 수 있는 시대이고, 토스는 자체적으로 디자인 툴을 만들어 다양한 시도를 할 수 있는 환경을 갖추고 있습니다. AI가 나름의 결과물을 만들어낼 수 있다는 점을 깨달았습니다.
디자이너의 새로운 역할
디자이너가 없어도 잘 돌아가는 시스템을 만든다는 것은 제게 두려움으로 다가왔습니다. 하지만 이를 통해 디자이너가 해야 할 본질적이고 가치 있는 일을 더 잘 이해하게 되었습니다. 앞으로는 AI가 더 뛰어난 결과물을 만들도록 원칙과 시스템을 설계하는 디자이너가 필요하다는 결론에 이르게 되었습니다.
조직의 학습 구조
이러한 경험은 전체 조직에서도 중요한 교훈이 되었습니다. 유용한 노하우를 상대적으로 빠르게 공유하고, 서로 러닝을 축적하는 구조가 필요하다는 생각이 들었습니다. 이를 통해 디자인 시스템을 넘어 UX 시스템 구축을 통한 러닝이 계속 누적되어 성장하는 구조를 만들고자 합니다.
툴의 중요성
마지막으로, 우리 조직은 일하는 방식에 최적화된 툴을 직접 만들고 있습니다. 이는 우리 업무의 효율성과 생산성을 높이기 위한 노력의 일환입니다. 내부에서 필요한 툴을 개발함으로써 디자이너들은 더 큰 시스템을 구축할 수 있는 기회를 가질 수 있습니다.
결론
AI가 디자인한 화면들이 실제 제품에 사용되고 있으며, 앞으로 AI가 디자이너의 역할을 대신하는 날이 올 것입니다. 그때 우리의 역할은 단순히 디자인을 이루는 자가 아닌, AI가 더욱 뛰어난 결과를 창출할 수 있도록 돕는 역할로 변화하게 될 것입니다. 여러분은 디자이너가 디자인을 하지 않는 시대에 어떻게 가치를 만들 수 있을까요? 이러한 질문을 스스로에게 던져보는 것이 중요할 것입니다.
토스테크
AI 시대, 디자이너를 없애보려 했다
EP162: 기억해야 할 9가지 클린 코드 원칙
이번 글에서는 '9 Clean Code Principles'라는 주제로 코드 작성 시 유념해야 할 중요한 원칙들을 제시하고 있습니다. 이러한 원칙들은 코드의 가독성과 유지보수성을 높이는 데 도움을 주며, 효과적인 소프트웨어 개발을 위해 반드시 이해하고 적용해야 하는 요소들입니다.
- 의미 있는 이름 사용하기: 변수와 함수의 목적을 드러나게 명명하기
- 함수는 한 가지 책임만: 각 함수는 단일 작업에 집중하기
- 마법 숫자 피하기: 하드 코딩된 값을 의미 있는 상수로 대체하기
- 설명적인 불린 사용하기: 불린 이름은 조건을 명확히 표현해야 함
- 코드 중복 피하기: 중복 코드는 버그도 중복시킴
- 깊은 중첩 피하기: 코드 흐름을 평탄하게 하여 명확성 증대
- '왜'를 주석으로 남기기: 코드의 의도를 숨기지 않기
- 함수 매개변수 제한하기: 너무 많은 파라미터는 혼란을 초래함
- 코드는 스스로 설명적이어야: 잘 작성된 코드는 주석 없이도 이해 가능함
개요
이번 글에서는 소프트웨어 개발에서 매우 중요한 "클린 코드" 원칙 9가지를 소개하겠습니다. 클린 코드는 유지 보수가 용이하고 읽기 쉬운 코드를 작성하는 데 도움을 줍니다.
클린 코드 원칙 9가지
- 의미 있는 이름 사용하기: 변수와 함수의 이름은 그 목적을 드러내야 하며, 단순히 값을 설명하는 것이 아닙니다.
- 하나의 함수, 하나의 책임: 함수는 한 가지 작업만 수행해야 합니다. 이렇게 함수의 책임을 명확히 하여 코드의 가독성을 높입니다.
- 매직 넘버 피하기: 하드코딩된 숫자 대신 의미 있는 상수로 교체하여 코드의 의미를 분명히 합니다.
- 설명적인 불리언 사용하기: 불리언 변수의 이름은 그냥 값이 아닌 상태를 나타내야 합니다.
- 코드 중복 피하기(DRY): 중복된 코드는 버그도 중복된다는 의미입니다. 가능한 한 로직을 재사용하도록 합니다.
- 깊은 중첩 피하기: 코드 흐름을 평탄하게 만들어 가독성을 높이고 인지 부담을 줄입니다.
- 무엇이 아닌 왜를 주석으로 남기기: 코드의 의도를 설명하며, 당연한 기계적 사항은 주석으로 남기지 않습니다.
- 함수 인자 제한하기: 너무 많은 매개변수는 혼란을 초래하므로 관련된 데이터를 객체로 묶어 전달합니다.
- 코드 자체가 설명이 되어야 한다: 잘 작성된 코드는 그 자체로 이야기를 해주기 때문에 주석이 덜 필요합니다.
결론
이러한 클린 코드 원칙을 따르면 코드 품질이 향상되고 유지보수가 쉬워집니다. 여러분은 이 목록에 어떤 다른 원칙을 추가하고 싶으신가요?
ByteByteGo Newsletter
EP162: 9 Clean Code Principles To Keep In Mind
Jobs
원티드 채용공고(최근 7일)
- 미리디 - [미리디] 데이터 엔지니어
- 잉클 - 데이터 엔지니어 (2년 이상)
- 교보문고 - 데이터 파이프라인 개발 및 운영(3년이상)
- 여기어때컴퍼니 - Data Engineer
- 워트인텔리전스 - 데이터 엔지니어 (3년 이상)
- 딥세일즈 - [인턴] 웹 크롤링/스크래핑 엔지니어
- 두나무(업비트/증권플러스) - Data Analytics Engineer
- 메이븐클라우드서비스 - 데이터 엔지니어
- 아임웹 - Data Engineer
- 페이커즈 - 데이터 엔지니어 (2~4년차)
- 카카오페이(kakaopay) - [계약직] 데이터 엔지니어 - DB내부 플랫폼 개발 및 DB운영
- 넷마블 - 게임 데이터 모델링/DW엔지니어
- 엘박스 - Data Engineer
- 데브시스터즈(Devsisters) - [기술본부] Data Warehouse Engineer (5년 이상)
- 데브시스터즈(Devsisters) - [기술본부] Data Platform Software Engineer
- 넷마블 - 데이터엔지니어 (Data Engineer)
- 미소(miso) - Data Engineer
- 그립컴퍼니 - 데이터 엔지니어
- 현대오토에버 - [SDx] Data Architect - 스마트팩토리 솔루션/서비스 데이터 아키텍트
- 현대오토에버 - [EnIT] Data Architect - SI 프로젝트
- 현대오토에버 - [Tech] Data Architect - 모델 진단 및 거버넌스 구축
- 현대오토에버 - [EnIT] Data Engineer - SAP BW / Qlik 운영
- 현대오토에버 - [SDx] Data Engineer - 스마트팩토리 데이터 파이프라인 개발 및 운영
- 현대오토에버 - [Tech] Data Engineer - 사내 전사 BI 구축 프로젝트 내 데이터 파이프라인 구축
- 현대오토에버 - [Tech] Data Engineer - 데이터 파이프라인 개발 및 운영(DSP, 팩토리)
- 현대오토에버 - [Tech] Data Engineer - 데이터 엔지니어링 및 시각화 분석
- 잉클 - 데이터 엔지니어 (5년 이상)
- 토스뱅크 - Data Engineer (Governance)
- 토스뱅크 - Data Engineer (Platform)
- 토스뱅크 - Data Analytics Engineer