화요일, 1월 29, 2019

[B급 프로그래머] 1월 4주 소식(빅데이터/인공지능, 암호화폐/블록체인, 읽을거리 부문)

(오늘의 짤방: deep learning via @ssh4net)
  1. 빅데이터/인공지능
  2. 암호화폐/블록체인
  3. 읽을거리
보너스: AlphaStar: The inside story
EOB

토요일, 1월 26, 2019

[B급 프로그래머] Devops를 위한 인터뷰 문제

DEVOPS INTERVIEW QUESTIONS AND ANSWERS라는 글을 읽다보니 도움이 될만한 몇 가지 질문이 보여서 독자 여러분들께 소개드리겠다. 한국 실정에 맞춰서 선별했고(번호는 원문을 그대로 따른다), 몇 가지 질문은 수정했고([수정]이라고 표시), 몇 가지 질문은 추가했다([추가]라고 표시). 해답은 원문을 읽으면서 각자 정리해보시기 바란다.

  • 1. Devops란 무엇입니까?
  • 2. Devops가 필요한 이유는 무엇입니까?
  • 3. Devops를 지탱하는 핵심적인 철학은 무엇입니까?
  • 4. Devops를 위한 인기 있는 도구를 열거해봅시다.
  • 5. 형상 관리 시스템(또는 버전 관리 시스템)은 무엇입니까?
  • 6. Git과 SVN의 차이점을 설명하세요.
  • [추가] 구성 관리 시스템(Configuration Management System)은 무엇입니까?
  • 10. Ansible의 장점은 무엇입니까?
  • [추가] * 컨테이너와 VM에 대한 차이점을 설명합시다.
  • 14. Docker란 무엇입니까?
  • 15. Docker Image란 무엇입니까?
  • 16. Docker container란 무엇입니까?
  • 17. Devops를 애자일 방법론으로 여길 수 있습니까?
  • [수정] 26. Docker 관리를 위해 주로 사용하는 도구는 무엇입니까?
  • 37. 직접 사용해본 형상 관리 브랜치 전략은 무엇입니까?
  • 40. CI(Continuous Integration)은 무엇입니까?
  • 42. Jenkins의 장점은 무엇입니까?
  • [추가] * CI 파이프라인은 어떻게 설계합니까?
  • [추가] * CI와 연계된 자동화된 테스팅의 장점은 무엇입니까?
  • [추가] * Devops 관점에서 모니터링 도구는 어떻게 관리해야 합니까?
EOB

월요일, 1월 21, 2019

[B급 프로그래머] 1월 3주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: 소스트리의 한국인 개발자 채용 방식 via @caesiumpark)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: 어떤 사이트의 아이디 정책 via @hibiyasleep
EOB

토요일, 1월 19, 2019

[B급 프로그래머] 동작하게 만들고, 제대로 만들고, 빠르게 만든다

소프트웨어 개발에 있어 가장 중요한 원칙 중 하나는 "동작하게 만들고, 제대로 만들고, 빠르게 만든다"라고 생각한다. 일단 동작하지 않으면 프로그램을 작성한 의미가 없기 때문에 동작에 최우선순위를 부여하고, 일단 동작하면 리펙터링으로 클린 코드를 만들어 유지보수와 확장이 가능한 형태로 만들고, 마지막으로 성능 튜닝과 최적화로 들어가야 한다. 이런 방식은 사업적으로도 무척 의미가 깊다. 이런 원칙을 어길 경우 개발이 지연되며 이는 사업적인 기회를 상실하게 만들거나 고객과 약속을 지키지 못하게 만드는 주요 원인이 된다. 지난 번에 올려드린 [B급 프로그래머] 모바일 앱이 아닌 웹 사이트부터 시작해야 하는 이유라는 글에서도 복잡한 모바일 앱 대신 웹부터 먼저 만들어야 한다는 주장이 나오는데 일맥 상통하는 내용으로 보인다.

Make It Work, Make It Right, Make It Fast라는 글을 읽다보니 사업적으로 풀어서 설명한 내용이 있어 소개드리겠다.

  1. 동작하게 만든다: 프로젝트를 성공이라 부르기 위해 사업에 필요한 최소 요구 사항을 충족시킨다.
  2. 제대로 만든다: 프로그램의 오류 처리를 강화하고 기능을 풍부하게 만들기 위한 부가 기능을 추가한다.
  3. 빠르게 만든다: 처리 과정에서 낭비를 찾아 제거한다. 시작 과정에서 파악한 몇 가지 가정은 올바르지 않을 가능성이 있다. 불필요한 비즈니스 논리를 제거하고, 더 나은 성능을 위해 코드를 개선하라.

'동작하게 만들고, 제대로 만들고, 빠르게 만든다'라는 원칙을 다양한 각도로 바라볼 수 있지만, 한 가지 사실은 확실해보인다. 일단 최소로 동작하는 프로그램을 만들어라. 이는 당신이 관리자이거나 기획자이거나 개발자이거나 상관없이 적용 가능한 몇 안 되는 교훈 중 하나이므로, 프로젝트 진행 과정에서 사람들 사이에 논쟁이 발생할 경우 가장 중요한 의사 결정 수단으로 사용하면 좋겠다.

EOB

수요일, 1월 16, 2019

[B급 프로그래머] 1월 2주 소식(빅데이터/인공지능, 암호화폐/블록체인, 읽을거리 부문)

(오늘의 짤방: What weird things have you used as a bookmark ? via @PhilosophyMttrs)
  1. 빅데이터/인공지능
  2. 암호화폐/블록체인
  3. 읽을거리
보너스: 감귤 생산 시기 via @jeju__orange
EOB

토요일, 1월 12, 2019

[독서광] 타이탄의 도구들

이 책을 읽은지 제법 오래되었지만, 게으름이 발동해서 독후감을 차일피일 미루고 있었는데, 새해 목표로 열심히 독서하기를 선정하고 나서 반성하는 의미에서 밀린 숙제를 하겠다. 이 책의 부제는 ' 1만 시간의 법칙을 깬 거인들의 61가지 전략'이다. 저자(팀 페리스)는 전 세계에서 가장 뛰어나고 우수하고 돈도 잘 버는 사람들(본문처럼 타이탄이라고 부르자)을 인터뷰하면서 그들만의 성공 노하우를 찾아내 꼼꼼하게 노트에 기록한 다음 책으로 만들었다. 세상만사 늘 그렇지만 이 책의 법칙을 모두 따라할 수도 없고 설령 따라하더라도 성공을 보장하지도 않지만 그래도 슈퍼 히어로들의 삶이 궁금하지 않은가?

이 책은 성공, 지혜, 건강이라는 세 가지 주제를 놓고 유명인들의 자세와 태도와 행위에 대해 열거하는 방법을 사용하고 있다. 따라서 일반적인 자기계발서에서 서술하는 모든 경우에 다 맞는 뜬 구름 잡는 이야기(예: 성공하려면 열심히 내면의 목소리를 따라 노력하고 어쩌구 저쩌구....)가 아니라 상당히 구체적인 내용이 전개된다. 책을 읽다보니 "도대체 뜬금없이 이게 뭐야?"라는 생각과 "세상에 성공한 사람들은 이렇게까지 한단 말이지?"라는 생각이 왔다갔다 했다. 잊어먹지 않기 위해 그 중에서 흥미로운 몇 가지 이야기를 정리해보았다.

아이디어와 창의성의 진보는 백지 위에 처음 밑그림을 그리는 순간과 그렸던 밑그림을 지우고 그 위에 다시 그리는 순간 사이에 존재한다. - 에드 캣멀(라따뚜이 제작자)
젊은 창업가들이 가장 먼저 다음 3가지 질문에서 답을 찾아야 한다: * 독점 문제(소규모 시장에서 큰 폭의 점유율을 차지하며 시작하는가?), * 비밀 문제(다른 사람들은 미쳐 알아차리지 못한 독특한 기회를 발견했는가?), * 유통 문제(제품을 만드는 데서 끝나는 게 아니라 고객들에게 전달할 수 있는 방법도 있는가?) - 피터 틸
성공하려면 다른 사람에 대해 정말 잘 알고 있어야 한다. 그들의 눈에 비친 세상이 어떤 것인지에 대한 지식이 반드시 필요하다. - 크리스 사카(구글 임원)
나는 두 가지 성공에 대한 원칙을 갖고 있다. 첫째, 사람들이 무시할 수 없는 실력을 갖춰야 한다는 것이다. 둘째, 무엇이든 물건을 만드는 사람은 반드시 똑똑해야 한다는 것이다. - 마크 앤드리슨
아무도 쳐다보지 않는다고 해서 스스로 사라지지 마라. 그들이 고개를 들어 나를 바라볼 때까지 기다려라. 퇴장만 하지 않으면 반드시 누군가가 나를 기어이, 본다. - 아널드 스워제네거
당신이 품고 있는 의문의 수준이 당신 삶의 수준을 결정한다. - 토니 로빈스
좋아하는 일을 하는 데 시간을 많이 내는 것은 불가능하다. 하지만 싫어하는 일을 빨리 해치우는 건 노력을 통해 가능하다. - 케이시 네이스탯(영화 제작자)
큰 성공을 거루려면 계속해서 공격적으로 나서야 한다. 인생에서 필요한 건 관리가 아니라 '정복'이다. - 댄 게이블(올림픽 레슬링 코치)
패자에겐 목표가, 승자에겐 체계가 있다. - 스콧 애덤스(딜버트 작가)
성공한 CEO들 가운데 상위 25퍼센트에 속하는 기술을 3가지 이상 갖추지 못한 사람을 찾기란 매우 어려운 일이다. - 마크 앤드리슨
한 번 성공한 방식으로 두 번 성공하는 경우는 없다. - 체이스 자비스(사진작가)
전문화는 곤충들이나 하는 일이다. - 로버트 하인라인
3과 10의 규칙은 '회사 규모가 대략 3배 커질 때마다 회사의 모든 것이 변한다'는 명제에서 출발한다. - 히로시 미키타니(라쿠텐 설립자 겸 CEO)
훌륭한 장부, 의견, 사업계획서는 대부분 자기만족에 그친다. 고객부터 만족시켜야 한다. - 데이먼드 존(후부의 CEO)
당신이 이제 막 사회생활을 시작한 젊은이라면 다음 세 가지를 진지하게 숙고해야 한다. 첫째, 당신은 당신이 생각하는 것만큼 유능하거나 중요한 인물이 아니다. 둘째, 당신은 태도를 조금은 바꿀 필요가 있다. 셋째, 당신이 안다고 생각하는 사실들, 혹은 책이나 학교에서 배운 것들은 대부분 시대에 뒤떨어지거나 잘못된 것들이다. - 라이언 홀리데이(전략가이자 작가)
위대한 사람은 언제나 순종할 준비가 되어 있다. 자신의 지휘 능력은 나중에 언제든 증명할 수 있기 때문이다. - 마흔 경(영국의 유명한 정치가)
성공하고 싶은가? 그렇다면 글을 잘 써야 한다. 100장짜리 글은 10장으로 쉽게 압축할 수 있다. 반면에 10장짜리 글을 100장으로 늘이는 건 거의 불가능하다. 10분 후 휴지통으로 직행하더라도 쓰고, 쓰고, 쓰고, 또 서야 한다. - 닐 스트라우스(베스트셀러 작가)
법칙 2. 선택할 수 있을 때는 두 가지 모두 선택하라. 법칙 3. 프로젝트가 여러 개야 성공도 여러 개가 될 수 있다. 법칙 6. 어쩔 수 없이 타협해야 할 때는 그 위에 요구를 더 추가하라. 법칙 7. 이길 수 없으면 규칙을 바꿔라. 법칙 8. 규칙을 바꿀 수 없으면 규칙을 무시하라. 법칙 11. 의심될 때는 생각하라. 법칙 22. 놀라운 돌파구도 그 전날까지는 정신 아간 아이디어였다. - 피터 디아만디스(엑스프라이즈 재단의 설립자 겸 회장)
네이비 실이 최강의 팀이 된 것은 평소에 극한 상황을 설정해 계속 훈련했기 때문이다. 그러면 고통과 절망, 두려움 같은 감각들이 둔해진다. 그래야 진짜 상황이 닥쳤을 때 훌륭하게 대처한다. - 조코 월링크(네이비씰 조교)
세상에는 오직 4가지 이야기만이 존재한다. 두 사람의 사랑 이야기, 세 사람의 사랑 이야기, 권력 투쟁, 그리고 여행이다. 서점에서 파는 책은 모두 이 4가지 주제를 다룬다. - 파올로 코엘료(소설가)
작가를 만드는 건 문장력이 아니라 어떻게든 '쓰고자'하는 의지다. - 파올로 코엘료(소설가)
스키에서 가장 중요한 턴은 마지막 세 번의 턴이다. - 빌리 키드(활상 스키 선수)
모든 건 계획대로 되지 않을 때가 많기 때문에 우리가 '안 되면 주어진 상황을 창의적으로 활용한다'는 대안을 반드시 갖고 있어야 한다. "어떻게 하면 돈과 시간이 충분했을 때보다 더 나은 상황으로 바꿀 수 있는가?"를 계속 궁리해야 한다. - 로버트 로드리게즈(영화 감독)
'내 손자, 셰이. 다른 방법이 없을 때는 그냥 열심히 하렴. 그러면 된단다.' - 세이 킬(유튜버)
"직업 만족의 가장 큰 조건은 '가슴이 뛰느냐'가 아니다. '정신이 참여할 수 있느냐'가 결정한다. - 윌 맥어스킬(옥스퍼드 대학교 철학교수)
"계획이 두 개 있는 사람은 하나를 잃으면 하나가 남는다. 하지만 하나밖에 없다면? 그 하나를 잃으면 망한다. 강해지고 싶다면 강해지면 된다. - 조코 윌링크(네이비 실 조교)
자신을 더 많이 알리는 데 시간을 낭비하지 마라. 그 시간에 더 많이 알릴 수 있는 '능력'을 키워라.
경쟁자 따위가 당신을 조종하게 만들지 마라. - 릭 루빈(음악 프로듀서)
좋은 아이디어를 떠올리고 싶다면 이렇게 질문하라. '사람들이 절대 말하거나 생각할 수 없는 것은 무엇인가?' 다수는 합의할 때만 아우성을 칠 뿐, 합의 결과가 나오면 곧바로 시들해지기 때문에 시간이 흐를수록 그냥 방치되는 것들이 많다. 혁신은 여기서 탄생한다. - 에릭 와인스타인(옥스퍼드 대학교 수학 교수)
일관적인, 타협하지 않는 불굴의 원칙이 있는 사람은 실패하지 않는다. 실패해도 오래가지 않는다. - 글렌 백

결론: 타이탄의 삶의 자세를 훔쳐보고 싶으면 이 책을 읽어보시라.

EOB

월요일, 1월 07, 2019

[B급 프로그래머] 1월 1주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: LINE private cloud via @akanuma)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: 여기가 판교라 먹히는 광고인건가... via @Realignist
EOB

토요일, 1월 05, 2019

[B급 프로그래머] 모바일 앱이 아닌 웹 사이트부터 시작해야 하는 이유

Why Founders Should Start With a Website, Not a Mobile App라는 글을 읽다 보니 공감이 되는 부분이 많아 독자 여러분들께 소개드린다.

원문에서도 언급하고 있지만, 모바일 앱의 사용 시간이 모바일 웹 사이트의 사용 시간보다 훨씬 많다. 연구 조사 결과에 따르면 대략 90% 정도 시간을 앱에서 보낸다고 한다. 모두 'Mobile First'를 따르는 가운데, 웹으로 가야할 이유에 대해 의구심이 들 것이다. 원문에서는 모바일 앱 대신 웹사이트를 먼저 구축해야 하는 이유를 크게 네 가지로 정리한다.

  1. MVP 구축: 웹은 변경을 가하는 즉시 반영되지만, 앱은 업데이트를 설치해야 한다. 또한 앱 스토어와 구글 플레이의 등록 정책은 웹에 비해 훨씬 까다롭다. 앱 개발자 등록 비용도 무시하지 못한다. 웹은 최소 가치 제품 구축에서 월등히 유리하다.
  2. 사용자 확보: 앱 다운로드는 부담스러우므로 사용자가 처음에 내려받게 만들기가 쉽지 않다. 그리고 앱 사용자 확보에 들어가는 비용도 점점 높아진다.
  3. 확장성: 처음 스타트업을 시작하면 엔지니어링 자원이 부족하다. 웹을 만들면 모바일, 데스크탑 모두에 적용이 가능하다. 반면 앱을 만들면 iOS와 안드로이드 용을 만들고 다양한 단말에 대한 호환성도 맞춰야 한다. 웹으로 끌어들인 사용자를 모바일로 전환하기는 어렵지 않다.
  4. 돈 벌기: 데스크탑 사용자가 더 높은 값을 지불한다. 회사에 근무하는 전문가들이 많기 때문이다. 또한 앱 스토어나 구글 플레이에 올리면 수수료를 30% 제한 금액만 매출로 잡힌다.

하지만 반드시 앱으로 가야하는 경우도 있을 것이다. 원문에서는 예외를 다음 세 가지로 정리한다.

  1. 위치 기반: 애플리케이션의 핵심이 위치 인식이나 이동과 관련이 있을 경우 위치 데이터와 센서에 접근하기 위해 앱이 유리하다.
  2. 네이티브 구성 요소와 밀접한 통합: 애플리케이션에 가속기, 습도계, 카메라, 기압계, 자이로스코프와 같은 네이티브 구성 요소와 밀접한 통합이 필요한 경우 네이티브 앱이 성능이나 정확도 면에서 뛰어나다.
  3. 로그인이 필요한 작은 거래를 계속 일으키는 경우: 사용자가 하루에도 여러 차례 접속할 경우 브라우저를 열어서 매번 로그인하기가 쉽지는 않다. 앱은 버튼만 누르면 된다.

결론: 일단 동작하는 제품을 만들고, 제대로 동작하게 만들고, 확장성이 뛰어나고 안정적으로 만들자. 최첨단 기술에 비해 아이디어가 중요한 스타트업이라면 'Web First'를 먼저 고려해보자.

뱀다리: 양쪽의 장점을 살리는 하이브리드 웹도 있긴 하지만, 주제에서 살짝 벗어나므로 순수 웹과 순수 앱으로 논의를 한정했다.

EOB