안돈 코드 - Andon Cord

안돈 코드 Andon Cord 예상치 못한 상황이 발생했을 때 문제 해결을 위해서 인력이 동원되어야 합니다. 이 포스트에서 소개하려는 도요타의 안돈코드가 무엇인지 알아보고, 이를 IT 개발 환경에서 어떻게 활용할 수 있는지 알아봅시다. 도요타의 안돈 코드 도요타의 생산공장에는 모든 근로자와 관리자가 문제 발생 시 잡아당길 수 있는 코드가 있습니다. 작업에 문제가 발생하거나 부품에 결함이 있을 때 혹은 작업 시간이 예정 시간보다 길어질 때 바로 이 코드를 잡아당깁니다. 안돈 코드가 당겨지면 팀장은 바로 문제 해결에 착수하며, 생산 라인이 중단되고 대응책이 마련될 때까지 전체 조직이 동원되기도 합니다. 하루에 1000번의 안돈코드가 발생하면 작업이 1000번 멈추는 것이 아니고 팀장이 짧은 시간 내에 판단(..

Git에 공동 Author 추가하기

Git에 공동 Author 추가하기 현재 저는 회사에서 새로운 기능을 추가하는 프로젝트를 진행 중입니다. 하지만 프로젝트 시작하자마자 작은 고민이 생겼습니다. 미리 설계해 놓은 문서를 바탕으로 제가 프로토타입을 만들고, 같은 팀원이 제 프로토타입 코드를 실제 서비스에 반영할 수 있게 작업해 주긴 했으나 지저분한 커밋이 많고 추가로 수정하고 싶은 부분이 생겨서 어떻게 할까 고민에 빠졌습니다. 결국 커밋을 전부 reset 후 새로 작성하기로 합니다. Feature Flag를 통해서 추가되는 새로운 기능이기 때문에 기존 코드를 변경하지 않기도 하고, 첫 릴리즈 이전에 발생한 변경사항들이 Commit에 존재하는 의미가 없으며 또한 rebase하기에는 손이 더 많이 갈 것 같아서 말이죠. 이때 한가지 고민이 생겼..

콘웨이의 법칙 - Conway's law

콘웨이의 법칙 - Conway's law "시스템을 설계하는 조직은 필연적으로 해당 조직의 커뮤니케이션 구조를 복제한 설계물을 만들게 된다" Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. - Melvin E. Conway 해커들의 Slang을 모아놓은 Jargon File에서는 이를 아래와 같이 설명하고 있습니다. 소프트웨어 구조는 소프트웨어 개발팀의 구조와 같아질 것이다. 일반적으로 4개의 팀이 컴파일러 작업을 하고 있다면, 4단계의 컴파일러가 만들어질 것이다. 간단히 요약하자면...

다양한 소프트웨어 버전 명명 (Software versioning)

다양한 소프트웨어 버전 명명 (Software versioning) 세월이 흐르면서 여러 가지 방법의 소프트웨어 버전 명명이 존재했었습니다. 결국 추세는 Symantic Versioning으로 기울었고, 현재는 많은 개발자가 Semantic Versioning을 따르기를 당연 시 하며, 왜 써야 하는지도 이해하고 있습니다. 하지만 의외로 많은 서비스들이 시맨틱 버전을 따르지 않습니다. 왜일까요? 당장 제가 다니고 있는 회사만 보더라도 Semantic Versioning과 다른 방식의 버전 명명법 두 가지를 사용하고 있습니다. 이와 관련하여 예전에 고민했던 내용을 이번 기회에 정리해서 포스트를 올려 봅니다. Semantic Versioning Major, Minor 그리고 Patch의 의미를 담고 있는 버..

Athena를 이용한 AWS ELB Access Log 분석 - Part 2

우리는 지난 포스트에서 왜 Athena를 써야 하며, 무슨 혜택이 있는지 알아보았습니다. 이제 간단한 예제와 Access Log를 분석해 보도록 합시다. 이 포스트는 AWS ELB의 기본 경로 규칙을 따르고 있습니다 데이터베이스 및 테이블 생성하기 /* 데이터베이스 생성 */ create database alb_db /* 테이블 생성 참고로 현재시간(2020년 3월 2일) 이후로 AWS에 의해 스키마 정보가 업데이트될 수 있으니 테이블 생성 시 아래 링크를 참고하시면 더 좋습니다. https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html */ CREATE EXTERNAL TABLE IF NOT EXISTS alb_lo..

Athena를 이용한 AWS ELB Access Log 분석 - Part 1

현재 상용서버에서 ELB(Elastic Load Banacing) 그중에서도 ALB(Application Load Balancer)를 사용하고 있는 중입니다. 근 1년간 서비스의 글로벌화로 인해 사용자 및 해킹 시도가 점점 많아져 로그 분석할 일이 늘어났습니다. 이전까지는 일반적으로 Nginx Access Log를 사용해서 관련 문제를 해결해 왔지만, 가끔 ELB 로그 확인이 불가피해지고 그때마다 S3에서 다운받아서 그 많은로그 하나하나 분석하는데 시간을 너무 잡아먹어서 결국 Athena를 이용해 보기로 합니다. Athena란 Amazon Athena은(는) Amazon Simple Storage Service(Amazon S3)에서 표준 SQL을 사용하여 데이터를 쉽게 바로 분석할 수 있는 대화형 쿼리..

웹 서비스 Maintenance Mode (점검 모드) 지원기

웹 서비스 Maintenance Mode (점검 모드) 지원기 온라인 서비스계의 유명한 4대 명검으로 유명한 점검 모드에 대해서 이야기하려 합니다. 점검 모드 지원 결정 운 좋게도 회사에서 운영하는 서비스가 2년 넘게 다운될 일이 없었습니다. Agile모델이 잘 실행되었기 때문일까요? 매주 릴리즈 함에도 불구하고 근 몇 년간 99.99%의 가용성을 유지하고 있었습니다. 하지만 올해 초 AWS MySQL을 AWS Aurora로 Migration 하기로 합니다. 문제는 우리 회사의 서비스가 사용자에 의해서 수정이 자주 일어나는 온라인 에디터라는 것! 이러한 서비스 특성상, 실시간으로 DB에 데이터를 업데이트하는 일이 잦게 발생하고, 이를 방지하고자 readonly 페이지를 제공할까? 등등 고민을 하게 됩니다..

2019년 회고

2019년 회고 벌써 2019년이 지나갔습니다. 매년 회고를 같은 말로 시작하게 됩니다. 시간은 빠르게 지나가고, 안 올 것 같은 30대가 된 지 벌써 2년이나 지났다는 점이 늘 새롭네요. 다른 분들의 블로그에 비하면 수더분하지만 매일 500명의 유저가 늘 들어와 주고 있습니다. 정말 감사하게 생각하고 있습니다. 그리고 걸어둔 애드센스가 드디어 2년 만에 100불이 된 것도 신기합니다. (한 달에 커피 한잔!) 올해는 회고 쓰는 유행이 지났는지 많이 보이지는 않지만, 개인적인 리마인드를 위해 올해도 회고를 남겨 봅니다. 2019년 로드맵 리뷰 작년 2018 회고에서 언급한 2019 로드맵 얼마나 성공했을까요? 완료 및 진행 중 이사 결혼 개인적으로 진행하는 서비스 진행 (진행 중) 실패 IELTS 시험 ..

[개발문화탐구] 데브옵스 (DevOps) - 애자일(Agile)

개발문화탐구: 데브옵스 (DevOps) - 애자일(Agile) 어질? 애자일? 이노옴!도적 키우는데 어질(agility) 만땅 찍나요? 아... 아뇨 여기서 알아볼 애자일(Agile)은 민첩하다는 뜻은 맞는데... 게임 얘기는 아니고요.Agile이라 불리는 소프트웨어 개발 방법론에 대해서 살짝 맛을 보려고 합니다.개발 방법론이라 하면 뭐 많이들 얘기하는 Lean startup, Scrum, Squad 등등 종류도 많고 이게 사실 무슨 소린지 잘 모르겠단 말이죠?이게 무엇이며, 왜 DevOps 이야기에 애자일 관련 이야기 빠지지 않고 나오는지 관련해서 알아보도록 합시다.소프트웨어 개발 방법론이란?소프트웨어 개발을 함에 있어 절차, 툴, 기법 등을 제시해 주는 지식입니다. 실제 회사에서 제품을 만들 때, 예..

나의 부족했던 2018년을 반성하며

나의 부족했던 2018년을 반성하며벌써 2018년이 지나갔습니다. 체감으로는 3개월 같은데 말 그대로 벌써 1년이네요. 많은 IT 블로거분들의 회고를 일일이 다 챙겨보고 많은 자극을 받았습니다. 다른분들의 회고에 써있는 성취들을 보다보니 나는 왜이렇게 이룬게 없는가!! 스스로 반성해야 될 듯 하여, 회고 겸 반성문?을 써봅니다2016년 회고 - 2017년을 맞이하며 2017년 회고 - Merry Christmas!2018년의 성과이룬 것LMIA 과정을 통해 취업비자를 무사히 취득할 수 있었습니다. 운 좋게도 DevOps 관련 업무를 맡아서 많은 걸 해볼 수 있었습니다. Production 수준의 AWS 환경에 대해서 많이 배울 수 있었습니다. 전까지는 크게 관심 없었던 개발 프로세스(Agile, Scru..

[개발문화탐구] 데브옵스 (DevOps) - Strangler Pattern: Migrate to Microservices

개발문화탐구: 데브옵스 (DevOps) - Strangler Pattern: Migrate to Microservices들어가기 전이 포스트는 이전 포스트 마이크로 서비스 vs 모놀리식 서비스와 이어집니다. 매우 쉬운 내용이니 간단하게 훑고 오셔도 좋을 듯.[개발문화탐구] 데브옵스 (DevOps) - 마이크로서비스 vs 모놀리식서비스서비스 아키텍처의 진화위 트렌드 그래프를 보면 아시겠지만, 마이크로 서비스에 관한 관심이 점차 많아지고 있습니다.이전 포스트에서는 모놀리식 서비스도 경우에 따라서 더 좋을 수도 있다곤 했지만, 대부분에 서비스는 마이크로 서비스가 더 적합하다고 생각됩니다.그럼 모놀리식 서비스는 어떻게 마이크로 서비스로 이전할 수 있을까요? 기존 서비스의 기능을 새로운 아키텍처로 처음부터 다시 ..

[개발문화탐구] 데브옵스 (DevOps) - 마이크로서비스 vs 모놀리식서비스

개발문화탐구: 데브옵스 (DevOps) - 마이크로서비스 vs 모놀리식서비스들어가기 전몇 년 전부터 마이크로 서비스에 대한 이야기를 흔히 접할 수 있었습니다. 마 그거? 서비스 다 따로 분리하는 거 아니야? 정도로 간단하게 알고 있습니다.사실 그게 맞긴 하지만, 마이크로 서비스가 무엇인지 혹은 왜 사용하는지에 대해서 어느 정도 깊이있게 알지 못하면 이후 소개할 개념들이 매끄럽게 이해가 안 되는 부분이 발생할 수 있겠다는 염려가 들었습니다.그런 이유로 한번 짚고 넘어가 봅시다! 그 전에 제목에도 언급된 모놀리식 서비스가 무엇인지 알아보도록 합시다.모놀리식 서비스 (Monolithic) 귀에 딱지가 생길 정도로 많이 보이던 용어인 마이크로 서비스에 비해 모놀리식 서비스는 뭔가 생소합니다.모놀리식 서비스 혹은..