[번역] 잘가요, 클린 코드(Goodbye, Clean Code)

최근 Dan Abramov 가 최근 자신의 블로그에 “Goodbye, Clean Code” 를 발행 하였습니다. 저는 이 글이 번역할 만한 가치가 있다고 생각하여 한국어로 번역을 하게 되었습니다. 도움을 주신 Glen 님께 감사의 말을 전합니다. 2020.01.20 추가: 원문에 번역된 한글 문서가 업로드 되었습니다. 해당 본문을 참고하시는 것을 추천합니다. 늦은 저녁이었습니다. 나의 동료가 방금 일주일 동안 작성한 코드를 체크 인 하였습니다. 우리는 그래픽 편집기 캔버스를 만들고 있었고, 가장자리의 작은 손잡이를 드래그하여 직사각형이나 타원형 같은 모양을 리사이즈 하는 기능을 구현하였습니다.
Read more

빠르고 안정적인 앱 배포의 노하우(3) - 의사 소통

안녕하세요. 빠르고 안정적인 앱 배포를 위해 엔라이즈 제품 팀이 중요한 요소라고 생각하는 것들을 공유하는 세 번째 글입니다. 아마도 이번 글이 본 연재의 마지막이 될 것 같습니다. :) 모든 팀의 구성원은 다른 구성원들과 다양한 방법으로 정보를 교환하게 됩니다. 우리는 이 정보 교환의 효율성과 속도가 좋은 제품을 빠르게 배포할 수 있는 아주 중요한 요인이라 판단합니다. 이번 글에서는 엔라이즈 제품 팀의 의사 소통 방법들에 대해 공유해 보겠습니다. 1. 수평적 의사 소통 많은 팀들이 수평적 의사 소통을 위해 많은 노력을 기울이는 것으로 알고 있습니다.
Read more

빠르고 안정적인 앱 배포의 노하우(2) - 일정 추정

지난 글 에서 저는 Smoke Testing 을 통해 엔라이즈의 개발 팀이 신속하고 핵심적인 테스트를 통하여 빠르고 안정적인 앱 배포 사례를 소개 하였습니다. 이번 글에서는 우리가 정확한 일정 추정을 위해 어떤 노력을 기울이는지 이야기 해 볼까 합니다. 정확한 일정 추정을 위하여 일반적으로 한 번의 배포를 위해 수행하는 개발 과정은 다음과 같습니다. 가설 수립 - 기획 - 디자인 - 개발 - 테스트 - 배포 - 분석 엔라이즈 제품 팀은 이 일련의 과정에서 일정의 불확실성이 가장 높은 단계를 개발 과 테스트 로 판단하고 있습니다.
Read more

빠르고 안정적인 앱 배포의 노하우(1) - Smoke Testing

들어가며 엔라이즈의 개발 팀은 총 4명으로 구성되어 있으며, 그 중 한 명이 Android, 한 명이 iOS 클라이언트를 담당합니다. 우리는 2019년 한 해 WIPPY 를 OS 별로 70여회 이상 성공적으로 배포 할 수 있었습니다. 기간으로 나누어 본다면 1주일에 1회 이상 배포를 한 셈입니다. WIPPY 는 Swift, Kotlin 으로 작성된 완전한 네이티브 앱1이며, 지난 1년 중 90분 이상 초과 근무를 한 날은 10일 미만입니다. 안정성 측면에서 보자면 최근 90일 기준 비정상 종료 미발생 통계 평균 99.
Read more

RabbitMQ 를 이용한 서버-클라이언트 양방향 통신 구현

개요 다양한 목적으로 인해 서버-클라이언트 간 양방향 통신(duplex communication system) 을 필요로 하는 경우가 있습니다. 엔라이즈에서 서비스 하는 WIPPY 와 MOCI 역시 서버-클라이언트 간 양방향 통신을 구현해야 하는 이슈들이 있었으며, 우리는 RabbitMQ 를 이용하여 양방향 통신을 성공적으로 구축하여 다양한 용도로 사용하고 있습니다. 우리의 사례를 소개함으로써 양방향 통신 구축을 고민하는 분들에게 작게나마 도움이 될 수 있다면 좋을 것 같습니다. 양방향 통신이 필요한 이유 서버-클라이언트 간 양방향 통신 기능이 최초로 요구되던 시기는 2016년으로 거슬러 올라갑니다.
Read more

제품 팀 2019년 회고

들어가며 지난 12월 26일, 한 해 동안 수고해 주신 팀원들을 위한 송년회가 열렸습니다. 다양한 게임도 즐기고, 맛있는 음식도 먹고, 많은 이야기도 나누고, 선물도 주고 받은 즐거운 시간이었습니다. 한 해의 마지막이 성큼 다가온 만큼, 엔라이즈 제품 팀의 2019년 회고와 다가올 2020년에 대해 이야기 해 볼까 합니다. 제품 팀(Product Team)에 대해 먼저 엔라이즈 제품 팀을 간단히 소개하겠습니다. 엔라이즈는 크게 마케팅 팀과 제품 팀 이렇게 두 개의 팀으로 나뉘어 있으며, 제품 팀은 다음과 같은 팀으로 구성 되어 있습니다.
Read more

스케치로 디자인 하기

모씨 디자인 팀은 8월 초 CTO의 추천으로 스케치를 디자인 주류 도구로 사용하게 되었습니다. 추천을 받은 순간에는 크게 기대하지 않았습니다. 새롭게 등장하는 디자인 프로그램들이 대부분 와이어-프레임(Wire-Frame)이나 목업(mock-up) 제작 도구 수준을 넘지 못하는 경우가 많았기 때문입니다. 하지만 하루 동안 조사하고 테스트한 결과는 ‘그저 그럴 것이다!’ 라는 예상을 깼고, 도리어 많은 기대를 하게 되었습니다. 그래서 가장 애용해왔던 포토샵을 멀리하고 스케치 중심의 디자인 작업 환경을 만들기로 했습니다. 모씨 디자인 리소스는 Adobe CCT 프로그램을 이용해 PSD, AI, SVG 파일로 관리하고 있었습니다.
Read more

PostgreSQL 업그레이드 이야기

시작 모씨의 메인 데이터베이스는 PostgreSQL 입니다. 대부분의 데이터는 이곳에서 저장, 관리되고 있는데요, 최근에 데이터베이스 운용과 관련된 이슈가 발생하여 문제를 해결하는 과정에 대해 이야기를 해 보고자 합니다. 문제 인식 최근에 간헐적으로 데이터베이스의 커넥션이 꽉 차면서 서비스가 짧은 시간 느려지거나 멈추는 현상이 보고되기 시작 하였습니다. 흔히들 말하는 ‘렉’ 이라고 하죠. 그동안 쌓아올린 코드들에 문제가 있지 않을까 몇 번 검토도 해 보고, 쿼리의 문제인 것 같아서 쿼리도 분석을 해 보았습니다만 별 다른 복잡한 쿼리를 사용하지 않고 있었기에 원인을 파악하기가 쉽지 않았습니다.
Read more

Skia Python 적용기

Skia 와의 첫 만남 모씨 서버 아키텍쳐는 기본적으로 Python + Flask 로 구성되어 있으며, 그 중 카드 생성 프로세스는 Celery 와 ImageMagick + Wand 로 구성되어 있습니다. 모씨를 방문하는 이용자들은 매일 수 백만장의 카드를 업로드 합니다. 실제 모씨가 오픈한 2014년 11월 이후 약 1년 6개월이 넘는 동안 이용자들이 업로드한 카드는 약 4억장에 이릅니다. 이용자들간의 주요 소통 수단이 카드인 만큼 카드 업로드 관련 코드는 꽤나 중요한 부분입니다만 별 탈 없이 안정적으로 운용되어 왔기에 크게 개선의 필요성을 느끼지 못하고 있던 상황이었습니다.
Read more

모씨 서비스 구성에 대해

2016년 새해가 벌써 한 달이 지났습니다. 2014년 11월 1일에 오픈한 모씨 서비스도 하루가 다르게 바뀌고, 성장하고 있습니다. 오늘은 그 동안 미루어 두었던 모씨 서비스를 구성하는 시스템에 대해 이야기를 해볼까 합니다. 실제로 많은 분들께서 모씨 시스템 구성에 대해 궁금해 하시고, 몇몇 분들은 직접 사무실에 오셔서 문의를 주신 적도 있었습니다. 지난 1년 3개월동안 발전해 온 시스템 구성에 대해 알아보도록 하겠습니다. Hosting 모씨는 AWS EC2 를 사용합니다. 저희가 상주하는 곳은 도쿄 리전이며, 여러 사정으로 인하여 서울 리전으로 이주할 계획은 현재 없습니다.
Read more