CategoryDev Culture (9)

안돈 코드 - Andon Cord

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

콘웨이의 법칙 - 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의 의미를 담고 있는 버..

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

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

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

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

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

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

[개발문화탐구] 데브옵스 (DevOps) - 소개

개발문화탐구: 데브옵스 (DevOps) - 소개데브옵스란?DevOps는 개발(Development)과 운영(Operations)의 합성어입니다왜 이 두 가지 개념이 합쳐 졌을까요?서비스의 패치를 위해서 몇 달간의 작업 후 배포하던 고전적인 방식과 달리, 현재는 빈번한 서비스 배포가 주류를 이루고 있습니다. 대부분의 서비스가 설치 기반에서 웹 기반으로 바뀌었으며 마이크로 서비스와 애자일 개발 방법론에 대한 관심이 많아졌고 그로 인해 빈번한 서비스의 배포가 필요해 졌습니다. (이는 애자일 편에서 더 자세히 다룰 예정입니다)하지만 개발팀은 서비스 개발에 매진하고, 운영팀은 보안과 안정적인 인프라 구축에 집중을 하므로 빈번한 배포 전략이 유연하게 동작할 수 없습니다.이런 새로운 전략을 위해서 두 팀이 병합되어 ..

[개발문화탐구] 코드리뷰 (Code Review)

개발문화탐구: 코드리뷰코드리뷰개발문화 중 하나인 코드리뷰에 관해서 이야기를 해보려 합니다.코드리뷰라 함은 간단히 말해, 내가 작성한 코드를 제3자가 검사하는 것입니다. 타인에 의해 예상치 못한 오류를 찾아내거나 코드를 더 좋게 개선할 수 있습니다. 자신의 발전과 팀의 발전 그리고 제품의 안정성을 위하여 꼭 도입되어야 하는 문화입니다.허나 이런 중요성에도 불구하고 코드리뷰를 왜 하는지 가슴으로 느끼기는 참 힘듭니다.이 포스트를 본다고 해서 직접 경험 해보지않는 이상 코드리뷰의 중요성을 100% 이해하기는 어렵겠습니다만 느낌이라도 살짝..코드리뷰를 대하는 자세직장 내의 서로 다른 개발자가 right way를 향해 발전하는 가장 좋은 문화가 바로 코드리뷰라고 생각합니다.하지만 기본적으로 서로를 인정하고 리스펙..

[개발문화탐구] 원격근무 (Remote work)

개발문화탐구: 원격근무캐나다에서의 경험을 바탕으로 직장 및 개발문화에 대해서 시리즈로 다뤄보도록 하려고 합니다.제 경험을 기반으로 하기때문에 흥미로 봐주시면 좋을 것 같네요! :)첫 번째 포스트의 주제는 바로 원격근무 입니다. 원격 근무란?원격 근무(telecommuting)이란 정보 기술(IT)을 활용해 원격지에서 장소에 구애받지 않고 언제 어디서나 업무를 수행하는 새로운 근무 방식을 뜻한다. 원격 근무자를 '홈 워커(home worker)'라고도 한다. 최근에는 IT 환경이 발전함에 따라 확대된 개념인 U-워크라고도 부른다. - wikipedia 간단히 말해서 회사가 아닌 집 혹은 다른 장소에서 일 하는 것을 말합니다.저도 몇 년 전까지 "그게 일이 돼? 딴짓할 거 같은데?"라는 생각을 하고 있었습니..