[카테고리:] Computer Science

  • AI는 다소 과대평가 되거나 다분히 과소평가 되고 있다

    AI는 다소 과대평가 되거나 다분히 과소평가 되고 있다

    링크드인을 켜면 매일같이 장밋빛 환상이 쏟아진다. 클로드나 오픈클로우(OpenClaw)로 하루 만에 프로그램을 만들었다는 둥, 이제 개발은 아이디어 싸움이라는 둥… 하지만 정작 개발 현장에서 마주하는 풍경은 사뭇 다르다. AI에게 뇌를 맡긴 채 ‘개판’으로 내린 지시로 짜인 이상한 코드들, 확장성이라곤 고려하지 않은 하드코딩 수준의 MR을 마주할 때면 이 괴리감은 극에 달한다. AI는 정말 우리를 대체하고 있는가, 아니면 우리는…

  • 증분 Sequence 기반의 대용량 로그 테이블 ETL 경험기

    증분 Sequence 기반의 대용량 로그 테이블 ETL 경험기

    “로그 테이블 created_at에 인덱스 하나만 걸어주시면 안 될까요?”“테이블 사이즈가 수십 TB인데 인덱스만 TB 단위입니다. 안 됩니다.” 데이터 엔지니어로서 대용량 로그성 데이터를 다루다 보면 필연적으로 마주치는 상황이다. UPDATE 없이 쌓이기만 하는(Append-only) 로그 테이블인데, 너무 거대해서 날짜 컬럼(created_at)에 인덱스조차 걸 수 없는 상황.이 글은 그런 척박한 환경에서 Primary Key(Sequence) 하나만 믿고 고속으로 데이터를 퍼 날랐던 전략과, 그…

  • [Troubleshooting] Spark가 데이터를 두 번 읽는 방법: JDBC 파티셔닝과 격리 수준의 환장 콜라보

    [Troubleshooting] Spark가 데이터를 두 번 읽는 방법: JDBC 파티셔닝과 격리 수준의 환장 콜라보

    “어제 매출이 왜 2배로 뛰었죠? 마케팅 대박 났나요?”“아뇨… 그럴 리가요…” (등줄기에 땀이 흐른다) 1. 사건의 발단: “데이터가 뻥튀기 됐어요” 어느 평화로운 오전, 분석가님으로부터 메시지가 왔다. 후행 마트 테이블의 집계 수치가 평소보다 훨씬 높게 나온다는 것.확인해 보니 특정 시간대의 데이터가 정확히 중복(Duplicate) 적재되어 있었다. PK가 중복되었으니 당연히 Sum 집계는 뻥튀기될 수밖에. 사용 중인 기술 스택은 AWS…

  • [Troubleshooting] 00시 정각의 비극: 클라우드의 배신과 네트워크의 역습 (MWAA & Glue)

    [Troubleshooting] 00시 정각의 비극: 클라우드의 배신과 네트워크의 역습 (MWAA & Glue)

    “클라우드는 무한하지 않다. 특히 내 지갑과 IP 주소, 그리고 오토스케일링 속도는 더더욱.” 1. 00시 정각, 대혼돈의 서막 우리 팀은 AWS MWAA(Managed Workflows for Apache Airflow)와 AWS Glue를 사용해 ODS 데이터를 적재한다.테이블 500개, 관련 Task만 2,000개가 넘는 이 거대한 파이프라인이 매일 00시 00분 00초에 동시에 출발 신호탄을 쏘아 올린다. 이론상으로는 아름다워야 했다.MWAA는 알아서 오토스케일링이 되고, Glue는…

  • [Troubleshooting] 분석가님의 쿼리가 회사의 새벽을 멈춘 날 (feat. Redshift Lock)

    [Troubleshooting] 분석가님의 쿼리가 회사의 새벽을 멈춘 날 (feat. Redshift Lock)

    00시 정각. 데이터 엔지니어에게는 가장 긴장되는 시간이다. 수백 개의 파이프라인이 동시에 돌아가며 데이터를 쏟아내는 이 시간에, 갑자기 지옥문이 열렸다. 1. 상황 발생: “배치는 돌고 있는데 데이터가 안 들어온다?” 여느 때와 다름없이 자정 배치가 시작됐다. 그런데 아침에 출근해서 확인해 보니, ODS(Operational Data Store) 테이블 갱신 작업이 Running 상태로 6시간째 멈춰 있었다. 이건 100% Lock 문제다. 그것도…

  • [홈서버 구축기 3편] 서버 OS & 개발 환경 세팅 (feat. WSL2, Docker)

    [홈서버 구축기 3편] 서버 OS & 개발 환경 세팅 (feat. WSL2, Docker)

    지난 2편에서 고성능 미니 PC 세팅을 마쳤으니, 이제 본격적으로 서버를 굴릴 환경을 만들 차례다. 1. 고민의 시작: OS는 뭘로 하지? 처음엔 서버니까 당연히 우분투 서버(Ubuntu Server)를 깔까 고민했다. 하지만… 나는 뼛속까지 윈도우(Windows) 유저다. 리눅스 커맨드 라인이 익숙하긴 해도, GUI 환경에서 오는 그 편안함을 포기할 순 없었다. 게다가 메인 PC로도 쓸 거라서 리눅스 데스크톱은 좀… 그래서…

  • 갖잖은 영어랑 용어 뽕 좀 빼라 – 판교어

    갖잖은 영어랑 용어 뽕 좀 빼라 – 판교어

    회사 누군가와 소통하다가 일도 안하고 제대로 이해도 못하면서 온갖 신기술에, 용어에, 글로벌뽕에 취해있는 놈이 미쳐버릴 뻔해서 화나서 쓰는 글. 보여주기식 ‘판교어’와 개발자들의 허세 링크드인이나 미디엄이나 어디 오픈소스 깃헙이나 있어 보이는 스타트업 선전 글에서나 본 그럴듯한 말로 온갖 미사여구 좀 갖다 붙이지 좀 마라. 니들이 언제부터 영어를 그렇게 잘했다고 멋들어진 용어들을 썼다고 잘난 체들이냐. 왜 유독…

  • [C++]전위/후위 연산자 성능

    [C++]전위/후위 연산자 성능

    전위 연산자 ++i, 후위 연산자 i++ 원래부터 진짜 필요한 곳이 아니면 후위 연산자 대신 전위 연산자를 쓰라. 성능과 메모리에 모두 영향을 준다.는 건 알고 있었지만 코딩 테스트 문제 풀면서 크게 영향을 준 케이스가 있어서 생각난 김에 정리. 그냥 프로그래밍 언어의 기본 중의 기본인 전위 연산자와 후위 연산자에 대한 짤막한 상식을 이야기해볼까 한다. 코드 한 줄을…

  • 좌충우돌 웹서비스 프로젝트 수행기 – 4.MSA Web Service Architecture 설계

    좌충우돌 웹서비스 프로젝트 수행기 – 4.MSA Web Service Architecture 설계

    Microservice Architecture(MSA)? Monolithic? 말 그대로 작은 서비스. 큰 서비스를 잘게 쪼개어 각각 하나의 독립적인 서비스로 나누는 설계 방식이다. 규모가 큰 서비스의 경우에 이를 하나의 프로젝트로 관리하고 개발하고, 하나의 큰(이를 monolithic이라고 표현한다.) 서비스로 운영하게 되면 부작용이 생긴다. 작은 기능 수정인데도, 프로그램을 통째로 내려받아서 수정하고, 테스트하고, 빌드하고 배포해야 한다. 작은 하나의 기능에 문제가 생겨도 프로그램 전체에 문제가…

  • [C++][VSCode]VSCode C++ MSVC 연동, 프로젝트 설정(vcpkg, CMake)

    [C++][VSCode]VSCode C++ MSVC 연동, 프로젝트 설정(vcpkg, CMake)

    달성 목표 코딩 테스트 연습 때문에 C++ 개발이 필요하다. 요즘 IDE는 계속 VSCode를 쓰고, 집 컴퓨터를 원격 데스크톱으로 붙어서 메인 컴퓨터로 쓰다 보니 그냥 MSVC(VS Community 2022 있음)를 쓰는 게 낫겠다고 생각해서 사용하려 했는데, Windows + VSCode + MSVC는 제대로 정리를 해본 적이 없네. WSL + VSCode + g++, Windows + VSCode + Mingx, Windows…