번개장터를 만들어 가는 사람들 소개 #1
저희 회사에 데이터 분석을 담당하시는 분이 계신데 아이디어 떠오르면 새벽에도 작업을 하시더군요. 주말 동안에는 정밀하게 가입자당 가치를 광고 매체별로 비교할 수 있게 구현해서 더 정밀하게 광고를 할 수 있는 여건을 만들어 주셨더라구요. 이런 열정적인 분들과 함께 일한다는건 참 기분좋은 것 같습니다.
TVSTRANGERTHINGS
Monterey Bay Aquarium
taylor price
Claire Keane
One Nice Bug Per Day
Peter Solarz

Product Placement

Origami Around
Aqua Utopia|海の底で記憶を紡ぐ
Cosmic Funnies
$LAYYYTER

❣ Chile in a Photography ❣
Game of Thrones Daily
let's talk about Bridgerton tea, my ask is open

shark vs the universe

祝日 / Permanent Vacation

#extradirty
Three Goblin Art

roma★
Stranger Things
seen from Philippines

seen from Malaysia
seen from Bangladesh
seen from Bangladesh
seen from Malaysia

seen from United States

seen from United States
seen from United States
seen from China
seen from United States
seen from United States
seen from United States
seen from Germany
seen from Argentina
seen from Germany
seen from Malaysia
seen from Mexico
seen from United States

seen from United States
seen from United States
@quicket-engineering-blog
번개장터를 만들어 가는 사람들 소개 #1
저희 회사에 데이터 분석을 담당하시는 분이 계신데 아이디어 떠오르면 새벽에도 작업을 하시더군요. 주말 동안에는 정밀하게 가입자당 가치를 광고 매체별로 비교할 수 있게 구현해서 더 정밀하게 광고를 할 수 있는 여건을 만들어 주셨더라구요. 이런 열정적인 분들과 함께 일한다는건 참 기분좋은 것 같습니다.
애자일 컨퍼런스를 다녀와서..
안녕하세요? @hbright7 입니다. 두달전 애자일 컨퍼런스에 참가하여 인상 깊었던 것 몇가지를 정리해 보았습니다. 컨퍼런스에서 각종 사례와 이론을 접하면서 많은것을 느끼고 돌아왔습니다.
1. 높은 퍼포먼스를 이루기 위해 무엇에 투자해야 하나?
도구에 투자하면 3배, 사람에 투자하면 11배, 시스템에 투자하면 17배, 관리에 투자하면 64배의 효과를 누릴 수 있다고 한다.
2. 일단 빨리 끝내고 대충 마무리 하면 어떻게 되나?
빨리 빨리 끝내려고 일을 대충 마무리 하게 되면 향후 유지보수시 높은 이자율로 빚을 갚아야 한다.
3. 프로젝트 관리자는
무엇을 할지에 대해서만 일러주고 어떻게 일할지에 대한 것은 재량에 맡긴다.
납득할만한 비전을 제시하라.
고객 가치를 알려주라.
자율, 권한이양, 동기부여를 부여하라.
4. S곡선
기업은 대체로 어느정도 성장을 이루고 나서는 정체기에 이른다. 그러므로 정체가 오기 전에 새로운 시도를 해야하는데, 새로운 시도에는 퍼포먼스 하락을 감내해야 한다. 하지만 단기간의 퍼포먼스 하락을 견디지 못한다면 새로운 도약을 이루어 낼 수 없다.
출처 : http://swprocess.egloos.com/2946096
5. 컨퍼런스 다녀와서 무엇이 바뀌었나?
두달이 지난 지금은 이슈트래커를 JIRA (+Agile Plugin) 으로 변경하고 스크럼을 도입하였으며, 동료검토를하기 위해 1차로는 다른 사람의 코드리뷰를 통과해야만 개발용 브랜치에 코드를 반영 가능하며, 2차로는 운영팀의 리뷰를 거처야만 배포가 가능해지는 프로세스를 도입하여 동료평가 문화를 정책 시켰고 결과적으로 문제가 발생하는 빈도가 줄어들었습니다.
6. 마지막으로, 애자일 선언문 참 좋네요 (출처 : http://agilemanifesto.org/iso/ko/)
우리의 최우선 순위는, 가치 있는 소프트웨어를 일찍 그리고 지속적으로 전달해서 고객을 만족시키는 것이다.
비록 개발의 후반부일지라도 요구사항 변경을 환영하라.
애자일 프로세스들은 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.
작동하는 소프트웨어를 자주 전달하라. 두어 주에서 두어 개월의 간격으로 하되 더 짧은 기간을 선호하라.
비즈니스 쪽의 사람들과 개발자들은 프로젝트 전체에 걸쳐 날마다 함께 일해야 한다.
동기가 부여된 개인들 중심으로 프로젝트를 구성하라. 그들이 필요로 하는 환경과 지원을 주고 그들이 일을 끝내리라고 신뢰하라.
개발팀으로, 또 개발팀 내부에서 정보를 전하는 가장 효율적이고 효과적인 방법은 면대면 대화이다.
작동하는 소프트웨어가 진척의 주된 척도이다.
애자일 프로세스들은 지속 가능한 개발을 장려한다. 스폰서, 개발자, 사용자는 일정한 속도를 계속 유지 할 수 있어야 한다.
기술적 탁월성과 좋은 설계에 대한 지속적 관심이 기민함을 높인다.
단순성이 -- 안 하는 일의 양을 최대화하는 기술이 -- 필수적이다.
최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 창발한다.
팀은 정기적으로 어떻게 더 효과적이 될지 숙고하고, 이에 따라 팀의 행동을 조율하고 조정한다.
Deview 2013 - 구글 개발 문화에 대해 듣고 왔습니다
번개장터의 @hbright7 입니다. 어제는 Deview 2013 에서 구글 개발자로 계신 분의 이야기를 듣고 왔는데 혼자 알고있기에는 아까워서 여기에 공유합니다.
코드 리뷰
커버리지가 낮으면 커밋할 수도 없다.
리뷰에서 팀원간에 의견 충돌 발생시에 매니저가 결정내린다.
유닛 테스트가 충분하지 않은 경우 커밋이 불가능.
Technical Dept - 꼼수를 쓰면 결국 더 큰 대가로 돌아오게 된다.
코딩 스타일이 맞지 않아도 시스템적으로 커밋이 불가능.
소스코드 관리
구글 모든 제품의 소스코드를 저장소 딱 하나로 관리한다 (그렇게 하면 비효적이지 않냐고 물어보았으나 왜 안되냐고 반문 하셨음)
소스코드 관리도구는 Perforce 라는 것을 사용한다. 그러나 개인적으로는 Git 을 사용하고 Git -> Perforce 변환하여 올린다.
성능보다 코드의 읽기 쉬움이 중요하다. 코드를 최적화 하여 서버 비용을 100만원 아꼈다고 할지라도 변경된 코드가 읽기 어려워져서 개발자 인건비 300만원을 소모한다면 커밋이 안된다.
소스코드를 청소하는 팀이 있다. 인수한 회사의 소스코드도 모두 컨벤션에 맞추도록 변경한다.
구글은 개발 문서 거의 없다. 소스코드에 개발 문서 거의 담는다. 어떤 코드는 처음 300줄이 문서다. 클래스에 입력과 출력에 대해 자세히 쓴다.
문화
금요일 저녁마다 구글 사장이 반바지에 맥주 마시면서 전체 직원들과 질문 답변 시간을 갖는다.
팀장이 답을 가르쳐 주지 않고 질문을 한다.
결정은 데이터에 기반해서 한다.
구글 모 운영팀의 목표 : 우리팀이 존재하는지 모르게 하는 것. 잘 동작하는 것은 있는듯 없는듯 알 수 없다. (도덕경에서 말하는 최고의 경지가 아닐런지 ㅎㅎ)
구글은 18개월 마다 팀을 옮기는 것을 추천한다. 하지만 옮겨도 좋을 정도로 인수인계를 해줘야 한다.
구글은 내부 개발팀만 1000명이 넘는다.
창조성은 제한된 환경에서 일어난다 - MS 오피스 안쓰고 구글 독스 쓰면 불편하지 않냐는 질문에...
번개장터 YouTube API 적용기
얼마 전부터 저희 번개장터에서는 유튜브 동영상을 통해 상품을 소개할 수 있는 기능을 제공하고 있습니다. 이 글에서는 저희와 마찬가지로 YouTube API를 활용한 기능을 구현하실 분들을 위한 약간의 가이드를 적어볼까 합니다.
번개장터란? 국내 1위 모바일 중고장터앱으로 누적 다운로드 170만건의 개인간거래 서비스입니다. (소개: http://quicket.kr/apps)
YouTube Data API 버전 선택
YouTube Data API에는 현재 크게 안정 버전인 v2과 개발 버전인 v3으로 나뉩니다.
저희는 아무래도 언제 바뀔지 모르는 experimental 버전을 사용하기에는 좀 위험하다는 생각에 안정 버전인 v2로 작업을 진행했습니다. 따라서 아래의 내용들도 API v2 기준으로 작성되었으며, v3의 경우는 조금(많이?) 다를 수 있습니다. v3을 사용한다면 구글에서 제공하는 클라이언트 라이브러리를 활용하여 직접 http 통신을 해야하는 번거로움을 덜 수 있습니다. (http://code.google.com/p/google-api-java-client/wiki/APIs#YouTube_Data_API 참조) 앱 등록 API를 사용하기 위해서 Developer Key를 발급받아야 합니다. 이 키는 앞으로 API 요청을 할때마다 헤더에 포함해주어야 합니다. 아래 주소에서 개발자 등록 및 제품 등록을 하면 해당 제품에 대한 Developer Key를 발급받을 수 있습니다.
https://code.google.com/apis/youtube/dashboard
API v3의 경우 https://developers.google.com/youtube/registering_an_application 참조하시면 되겠습니다. :) 사용자 인증 (Authentication) 번개장터는 유튜브에 영상을 업로드하는데, 이러한 기능을 위해서는 유튜브에 대한 사용자 인증이 필요합니다. 인증 메커니즘은 OAuth 2.0을 사용합니다.
다행히 Google Play services client library를 이용하면 번거로운 인증 과정을 건너뛸 수 있습니다. :) SDK Manager의 Extras 항목아래에서 'Google Play services'를 설치후 사용하면 됩니다. 관련 문서는 아래 페이지를 확인하세요.
http://developer.android.com/google/play-services/index.html
액세스 토큰을 요청할때는 다음과 같은 식으로 합니다.
GoogleAuthUtil.getToken(context, accountName, scope);
이 때, 예외 처리가 반드시 필요한 부분이 있는데,
Play services를 이용할수 없는 경우(설치 되지 않았거나 구버전?)
토큰을 처음 요청하는 경우
이렇게 두 가지 입니다. Play services가 설치되지 않았으면 설치 안내를 해 주어야 하고, 토큰 요청을 처음 하는 경우에는 사용자로 부터 권한 확인 과정을 거쳐야 합니다. 이러한 상황이라면 getToken 메소드 호출시 예외가 발생하게 되어 있으며, 이를 잡아 처리할 수 있습니다. 아래 문서에 나온 예제를 보시면 무슨 얘긴지 바로 아실겁니다. :)
http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html
YouTube 채널 개설 토큰도 받았겠다, 이제 동영상을 올려보려 하니 에러가 나는군요. 충격과 공포의 401 NoLinkedYouTubeAccount 입니다. (v3 역시 에러코드는 다를지언정, 유사한 에러가 있을 겁니다)
구글 계정이 있더라도, 유튜브를 제대로 사용하려면 채널을 개설한 상태여야 합니다. 채널을 개설하지 않은 상태에서는 위와 같은 에러가 발생하게 되며, 따로 채널 개설 과정을 거쳐야 합니다.
저희는 기존에 있던 채널 개설 API를 사용했었는데, 지금 다시 확인 해보니 불과 몇주 사이에 deprecated 처리 돼버렸군요. :( 현재 문서에서는 WebView를 통해 채널 개설 페이지를 띄워주는 방법을 권하고 있으며, 그 내용이 아래 페이지에 나와있습니다.
https://developers.google.com/youtube/create-channel
... 저희도 다시 바꿔야겠습니다. 그 밖의 난관들 채널 개설 과정까지 무사히 처리했다면 이제 API를 사용하는데 있어 직접적인 어려움은 없을 것이라 생각됩니다. 다만 이제는 앱을 만들면서 나타날수 있는 일반적인 난관들이 기다리고 있는데... - 예외 처리 아무래도 네트워크 작업들이 많다보니 수많은 예외 상황에 대해서 신경을 써야 합니다. 일반적인 IOException 처리, 액세스 토큰이 유효하지 않을 때의 처리, status code에 따른 처리 등등이 필요합니다. 어렵다기보단 번거롭고 신경이 많이 쓰이는 과정입니다. 설령 클라이언트 라이브러리를 사용한다고 해도 결국 예외 처리는 따로 해주지 않을 수 없습니다. 이는 물론 유튜브 뿐 아니라 어떤 API라도 마찬가지구요. :) - UI 흐름 또한 일련의 과정들이 무언가 선조건을 가지는 경우가 있고, 해당 과정을 실행해보지 않으면 선조건이 충족 되어있는지 알 수 없는 경우가 있습니다. 이런 상황에선 UI 흐름을 제어하는 것이 복잡해질 수 있습니다. 번개장터를 예로 들면, 영상을 올리기 위해서 액세스 토큰이 필요합니다. 액세스 토큰을 얻어오려면 당연히 계정을 선택해야겠죠. 그러나 해당 계정에 대한 액세스 토큰을 처음 요청하는 경우에는 사용자로부터 권한 확인을 받는 과정도 한 번 거쳐야 합니다.
여기서 토큰을 요청할 때 권한 확인을 받아야 하는지의 여부는 미리 알 수 없습니다. 그저 UserRecoverableAuthException이 발생하면 이 예외에서 Intent를 얻어와 권한 확인 화면을 띄워주고 onActivityResult로 결과가 오면 다시 토큰을 요청하는 식입니다.
이런 식으로 중간에 다른 작업을 하고 돌아와서 이전 작업을 재개해야 하는 상황이 발생할 수 있습니다. 간단히는 Runnable로 작업을 저장해두었다가 재개할 수도 있겠고, Future를 활용할 수도 있겠습니다.
맺음
오픈마켓 등에서 상품을 판매할때, 아무래도 사진만 있는 것보다는 실 제품에 대한 영상이 있으면 구매에 많은 도움이 될 수 있습니다.
가령 기타를 판매할 때 기타연주 동영상을 보여주면 구매를 더 촉진할 수 있겠죠 :)
이와 같은 경우가 아니더라도 영상을 첨부함으로써 보다 다양한 정보를 사용자에게 제공할 수 있겠죠. 영상의 활용 범위는 무궁무진합니다. YouTube와 연동함으로써 별도의 서비스를 구축하지 않고도 영상을 올리거나 보여줄 수 있습니다. 지금 바로 활용해 보시는 것은 어떨까요?
번개장터도 한번 사용해 보시구요 :)
다운로드 https://play.google.com/store/apps/details?id=kr.co.quicket
읽어주셔서 감사합니다~
- 번개장터 안드로이드 책임 개발자 이희재 <[email protected]>
스타트업을 위한 웹서비스 추천
안녕하세요? 번개장터를 운영하면서 적은 인원으로 어떻게 하면 최고의 효율을 낼 수 있을까를 많이 고민해 왔습니다. 그래서 운영을 대신해줄 외부 서비스가 있으면 최대한 활용해 왔고 오늘 그 목록을 공유하게 되었습니다.
https://www.beanstalkapp.com : SVN, Git 저장소 제공 서비스. SVN 서버 구축 대체.
http://www.appannie.com/ : 모바일 어플 지표 분석 서비스. 안드로이드, 아이폰 어플의 다운로드 추이등을 살펴볼 수 있음.
http://sendgrid.com/ : 대량 이메일 발송 서비스. SMTP 서버 구축 대체. 요즘은 Amazon SES 가 더 싸다는 얘기도 있음.
https://www.asana.com/ : 각종 이슈트래커 다 써봤지만 여기 만큼 편한 프로젝트 도구를 찾지 못하였음. Facebook 공동 창업자중 한명이 만들어서 그런지 믿을만 함.
https://www.getsentry.com/ : 서버단의 예외를 기록하고 모니터링 할 수 있는 서비스. 직접 구축하려다가 관리비용 때문에 저렴한 비용 내고 사용중에 있는데 안정적이고 매우 만족스러움.
http://www.google.com/analytics/ : 번개장터의 모바일, 웹서비스를 분석하는데 사용하고 있는 분석 플랫폼. 단순 지표부터 세그멘테이션, A/B 테스트 까지 적극적으로 활용하고 있음.
http://www.flurry.com/ : 모바일에 최적화된 분석 서비스. Google Analytics 에서 간지러웠던 부분을 긁어줄 수 있어 사용하고 있음. 예를 들어 Flurry를 잘만 활용하면 세그멘테이션 분석을 손쉽게 할 수 있음.
http://copperegg.com/ : 서버의 상태를 모니터링 하는 서비스. 리눅스 서버 뿐만 아니라 MySQL, Redis 등도 모니터링 가능하다. 비슷한 서비스로 Datadog 과 New relic 이 있다.
http://hockeyapp.net/ : 안드로이드, 아이폰 어플 여기서 제공하는 SDK를 이용하면 오류 통계와 발생 사유를 수집할 수 있다. 아이폰용으로는 Crashlytics 가 유명하다.
https://www.rjmetrics.com/ : 전자상거래 전용 분석 서비스.
http://www.loggly.com/ : 늘어만 나는 로그를 저장하고 분석해 주는 서비스.
https://www.uservoice.com/ : 사용자들의 목소리를 들을 수 있게 만들어 주는 서비스.
혹시 위의 목록 이외에도 추천해주실 서비스가 있다면 이메일 ( [email protected] ) 혹은 댓글로 알려주세요 ^_^
p.s 함께 일할 UI 디자이너, 웹개발자를 찾습니다~
Data-Driven 스타트업 번개장터의 데이터 기록 시스템
로그 데이터는 번개장터의 가장 큰 자산 중 하나 입니다. 로그를 분석하여 서비스가 나아가야할 방향을 알 수 있기 때문입니다. 하지만 안정적으로 빠짐없이 로그를 저장하는 것은 쉽지 않습니다. 하루에 수천만에서 수십억건의 기록을 쌓으려면 약간의 노력이 필요합니다.
기존에는 많은 로그를 Google Analytics 혹은 Flurry에 저장하였으나 데이터가 100% 기록되는 방식이 아니고 분석이 어려운 부분도 있어서 자체적으로 데이터를 기록하는 방식이 필요했습니다. 결정적인 이유는 최근에 A/B 테스트를 하면서 적은 데이터에 대해서도 분석이 필요했는데 Google Analytics 등을 이용해서는 분석이 어려웠습니다.
여러가지 생각하다가 로그는 MongoDB 를 이용하여 기록하려고 하였습니다. 하지만 분석업무를 하는 사람들이 익숙하지 않은 JSON 방식의 쿼리 방식을 익히는 것은 시간 낭비라고 생각 했습니다.
그 다음으로 고려한 방식은 Fluentd 에 빠르게 기록하고 MySQL에 한꺼번에 기록하는 방식을 선택 했으나 운영하다가 사망한 이후로 켜지지가 않고 기록된 데이터가 반복해서 저장되는 기이한 현상등을 한번 경험하고 나서는 바로 제거해 버렸습니다.
그래서 외부 툴을 사용 하지 않고 자체 제작하여 MySQL에 기록하기로 하였고 관리 비용을 줄이기 위해 유클라우드의 DB 인스턴스를 사용하기로 결정하였습니다. 백업과 슬레이브 설정이 마우스 클릭 한번으로 관리 가능하며 서버의 성능을 동적으로 변경 가능하기 때문입니다. 인스턴스는 좋은 사양이 필요 없어서 저렴한 것을 선택하였습니다.
요구사항을 정리하면..
1) 데이터는 가능하면 유실되지 않아야 한다. 2) 초당 수십만건의 로그도 처리할 수 있는 확장성을 가져야 한다. 3) SQL 을 사용하여 분석이 가능해야 한다. 4) 하루에 쌓이는 데이터는 1억건 미만 이다. 5) 관리가 어렵지 않아야 한다.
위의 요구사항을 처리하기 위해서는 로그를 직접 MySQL 에 기록하는 방식으로는 한계가 있었습니다. MongoDB 와 다르게 데이터가 실제로 쓰였음을 확인한 후에 클라이언트에 응답을 보내기 때문에 쓰기 응답속도가 느리고 확장성이 떨어집니다.
[빠른 로그 쓰기 구현]
로그 기록이 서비스 응답시간에 영향을 받지 않기 위해 Redis 라는 메모리 기반 NoSQL 여러대에 나누어 로그를 기록할 수 있게 하였습니다. 이 때 Redis 가 죽는 경우를 대비하여 Twemproxy 라는 Redis 프록시를 준비해 두었기 때문에 Redis 가 재부팅 되더라도 큰 문제가 없습니다. 그리고 Twemproxy 가 죽는 경우를 대비하여 소프트웨어 L4 로드밸런서를 앞단에 두었습니다.
[Redis에 기록된 로그를 MySQL에 저장하기]
여러대의 Redis 에 저장된 데이터를 Cron 에 등록된 스크립트를 통해서 MySQL에 한꺼번에 모아쓰기를 합니다. 따로 따로 쓸 때 보다 훨씬 빠르게 처리 가능합니다. 이때 로그를 저장하는 스토리지 엔진은 InnoDB 대신 MyISAM을 사용합니다. 처음에는 잘 모르고 innoDB 를 사용했지만 로그성 데이터에는 MyISAM 엔진이 조금 더 빠르고, 용량을 훨씬 적게 사용합니다.
[MySQL 에 쌓인 데이터 분석/시각화]
번개장터는 데이터 분석과 시각화를 정말 열심히 합니다. High Chart를 이용하여 각종 복잡한 분석 결과를 시각화 하는 대시보드를 꾸준히 구축하고 있으며 개발자 뿐만 아니라 마케터/기획자가 직접 Python+SQL 을 이용해서 분석을 하고 있습니다.
마지막으로 개발자를 모집합니다 >.<
글쓴이: @hbright7
번개장터에서 MySQL 사용하면서 알게된것들
지난 3년간 번개장터 서비스를 운영하면서 얻은 MySQL 운영 팁을 알려드립니다.
1. 서비스 중인 데이터베이스의 테이블의 스키마를 서비스 중단 없이 변경하려면?
InnoDB 스토리지의 경우 스키마를 변경하면 변경이 완료될 때 까지 Lock 이 걸리게 되어 서비스가 잠시 중단 되어야 했습니다. 그래서 저희는 Percona Toolkit 의 pt-online-schema-change 기능을 사용 하여 중단 없이 변경합니다. 사용 방법도 간단하고 나름 안정성이 있다고 합니다. 그러나 단점으로는 기존에 트리거(Trigger)가 걸려 있는 테이블에는 적용이 불가능 합니다.
대안으로, MySQL 5.6을 도입하거나 MySQL Cluster 와 같이 스키마를 변경하는 것이 자유로운 제품을 선택하는 것도 방법이지만 아직 검증이 많이 되지 않아서 문제가 있습니다.
2. 데이터베이스 연결이 너무 많은데 어떻게 하나요?
MySQL 클라이언트의 동시 접속 개수가 1200개를 넘어가는 경우가 생기면서 기존 MySQL 5.5 에서 쓰레드 생성 실패하여 서버가 죽어버리는 문제가 발생하였습니다. 클라이언트에서 접속 개수를 줄이도록 수정하였으나 향후에도 유사한 문제가 발생할 가능성이 있어서 Connection Pool 기능이 제공되는 MariaDB 5.5 를 도입하였습니다. 덕분에 수천개의 동시 접속이 들어와도 서버가 죽는 경우는 예방할 수 있었습니다.
3. 실시간 백업 / 증분 백업을 하고 싶어요
Xtrabackup 을 사용하면 서버가 돌아가는 중간에도 데이터 백업을 할 수 있으며 증분 백업도 가능합니다. 저희도 아무런 문제 없이 사용 하고 있지만 백업된 데이터가 문제 없는지 확인 하는 과정이 필요합니다.
Xtrabackup 의 단점은 데이터를 통째로 바이너리 형태로만 뽑아낼 수 있다는 점입니다. 그래서 SQL 형태로 뽑아내고 싶은 경우에는 Mydumper 를 추천합니다.
4. 몇백만건이 넘어가는 테이블 관리하기
하루에 수십만건씩 추가되는 테이블은 파티셔닝을 하도록 설계합니다. 용도에 따라서 다르겠지만 저희는 대체로 시간 단위로 데이터를 물리적으로 분리해서 저장합니다. 적절히만 사용해도 수십억건의 데이터 관리도 불가능 하지 않습니다.
5. MyISAM의 Fulltext 검색에 부하가 심해요
저희는 myisam 스토리지 엔진을 사용 하다가 여러가지 문제점 때문에 Sphinx 검색엔진을 사용 하고 있습니다. 위치검색, 한글 검색, 비 텍스트 검색 모두에서 매우 빠른 성능을 보여줍니다. 게다가 확장성이 좋아서 저가 서버에 분산 배치해두었는데 로드가 거의 없었습니다.
6. 마스터 서버 장애 복구 솔루션은 뭐가 좋나요?
저희는 MariaDB Galera 를 검토중에 있습니다. MySQL MHA, MySQL MMM 을 사용하는것 보다 설정이 간편하고 복잡도가 줄어듭니다. DRBD와 Pacemaker/Corosync 을 이용한 방법에 비해서 쓰기 속도가 조금 떨어지지만 읽기 속도는 서버를 추가할 때 마다 높아집니다.
DRBD 기반과 Galera 를 비교한 자료를 참고하세요
7. 데이터베이스를 모니터링 하는 좋은 방법이 뭘까요?
MONyog를 추천합니다.
실시간으로 쿼리를 분석하고 느린 쿼리들을 취합하여 가장 느린 쿼리부터 개선할 수 있다.
어떤 쿼리가 Lock 을 유발하는지 알 수 있다. 놀라운것은, 어떤 쿼리가 Lock에 영향을 받았는지 까지 알 수 있다. 환상적이다.
Cache Miss 같은 것이 어떤곳에서 발생하는지를 보고 메모리를 늘려야 하는지 등을 결정할 수 있게 해준다.
Connection Refuse 가 얼마나 일어나는지 확인가능하다.
어떤 테이블이 많이 접근되는지 알 수 있다. (가장 접근이 많은 테이블 부터 최적화를 할 수 있다)
8. 트리거(Trigger)를 사용해야 하나 말아야 하나?
요구사항 마다 다를것입니다. 저희의 경험으로는 트리거를 사용하면 굉장히 일이 편해지긴 하지만 트리거를 변경하는 해야하는 경우 삭제하고 다시 생성 해야 하는데 Lock 이 걸려서 서비스가 잠시 중단되는 문제가 있고 위에서 언급한 것 처럼 실시간으로 스키마를 변경하는데 걸림돌이 됩니다. 그래서 가능하면 저희는 어플리케이션 단에서 해결하려고 합니다.
9. 로그성 데이터 관리는?
저희는 Data-driven 방식으로 서비스를 개선해 나가고 있습니다. 그러기 위해서는 로그를 잘 쌓아야 하는데요, Google Analytics 나 Flurry를 잘만 활용하면 다양한 분석과 고객 세분화 까지 할 수가 있습니다. 그러나 자체적으로 데이터를 쌓아야 하는 경우가 있을 때는 Redis에 순차적으로 저장하고 1분에 한번씩 MySQL에 벌크로 저장합니다.
제가 생각하는 MySQL의 장점
온라인 스키마 변경, 고가용성 때문에 NoSQL을 고려한적이 많았으나 MySQL에서 해결 가능합니다. NoSQL은 숙련된 인력을 구하기 힘들기 때문에 개발 비용이 더 올라갈 수 있고 데이터 분석에 SQL 만큼 좋은 인터페이스를 가진 것이 별로 없는것 같습니다. 우리 회사에서는 개발자 아닌 사람들이 분석을 많이 하는데 SQL으로 분석하는데요 NoSQL을 사용했다면 조금 힘들지 않았을까요? 스타트업에게 MySQL 은 좋은 선택인것 같습니다.
MySQL 추천 사이트
MySQL Technical Presentations 2013
http://www.percona.com/
http://www.mariadb.org/
https://code.google.com/p/shard-query/
마지막으로 번개장터에서 모바일 커머스를 혁신할 개발자를 찾습니다.
MySQL 전문가로 거듭나고 싶은 개발자
파이썬이 무지 좋은 개발자
모바일에서 만큼은 옥션/지마켓을 이겨보고 싶은 개발자
UX디자이너와 함께 기획하며 개발하고 싶은 개발자
이력서를 [email protected] 으로 보내주세요! ( ~ 2013/5)
똑똑하고 100배 일 잘하는 개발자 모시기
새벽에 일어나서 어제 사온 조엘 스폴스키의 '똑똑하고 100배 일 잘하는 개발자 모시기' 를 읽었습니다. 처음 조엘의 다른 책을 읽었을때는 감명을 받았고 최근에 출시된 StackOverFlow 라던가 Trello 같은 웹서비스를 보면 책의 내용이 더 신뢰가 가네요.
[요약]
1. 능력있는 개발자와 평범한 개발자의 차이는 매우 크다. 2류 작곡가 10명을 모은다고 하더라도 모차르트의 곡과 같은 수준의 음악이 나오는것은 아니다
2. 최고의 근무 조건 구비 -> 최고의 프로그래머 채용 -> 최상의 프로그램 개발 -> 이익 실현
3. 프로그래머에게 지출되는 비용을 인색하게 줄이면 결국 소프트웨어는 날림이 된다.
4. 직원들을 통한 인재 채용은 최악의 방법이라고 생각한다
5. 인턴쉽을 적극 활용하라
6. 개인 사무실은 분명히 생산성에 큰 도움이 된다. 자신의 회사도 고집스럽게 개인 사무실을 유지하고 있다.
7. 개발자에게 좋은 장난감 제공하자. 최고급의 컴퓨터와 대형 모니터, 아마존에서 기술서적을 구입할 수 있도록 지원해주면 생산성이 오른다.
8. 조직 내에서 프로그래머의 대우가 어떤가? 전문가로 대접받는가?
9. 면접에서는 지원자 뿐만 아니라 회사도 평가 당한다. 세련된 사람들인지 성품이 좋은지 평가받는다. 좋은 사람을 뽑고 싶으면 왕짜증 스타일의 프로그래머는 면접 당일만큼은 제외 시켜야한다.
10. 정상급 신입 사원들이 스스로 프로젝트를 선정하게 두라
11. 멋지지만 불필요한 최신 기술을 허용하라. 회사일에 지친 사람들에게 지적 만족감이라도 주어야 한다.
저희 회사도 최고의 근무 조건을 갖추기 위해 노력하겠습니다!
(주) 퀵켓 개발자/디자이너/기획자 채용 공고
번개장터 개발사 (주)퀵켓에서 우수한 개발자를 채용합니다.
회사 소개
"작지만 강한 회사!" 서울시 서초구 서초동에 위치한 (주)퀵켓은 2011년 모바일 중고거래 1위 번개장터를 만드는 벤처기업 입니다. 번개장터는 최근 12개월간 가파른 성장을 이루어 왔고 앞으로 2년 내에 국내 가입자 1000만명이 사용하는 중고장터를 만들고 3년 후에는 코스닥 상장을 목표로 하고 있습니다.
서비스
- 안드로이드용 번개장터 : http://bit.ly/10Gti9D
- 아이폰용 번개장터 : http://bit.ly/TpGqbb
연혁
2010/09 : 프라이머 엔젤 투자 유치
2010/11 : 애플사(Apple Inc.)로부터 이달의 Best 앱으로 선정
2011/02 : 법인 설립 (주식회사 퀵켓)
2011/08 : 떠오르는 CEO 16인 선정 (한국경제)
2012/02 : 본엔젤스 파트너스 등으로 부터 2차 투자 유치
2012/03 : 거래 신뢰 강화를 위한 ‘소셜 보증’ 특허 등록 완료
2012/08 : 물품 등록 330만개 돌파! 모바일 No.1 오픈마켓플레이스
2012/09 : 삼성 S Suggest 추천앱 등극
2012/10 : 스마트랭킹에서 인기앱 등극
2012/11 : 네이버 앱스토어, Go launcher 앱스토어에서 추천앱으로 선정
2012/12 : 편의점 택배 서비스 런칭
2013/02 : 구글 플레이 스토어 금주의 추천 어플
2013/02 : 물품 등록 700만개 돌파! (6개월 만에 2배 성장)
= 채용부분 =
웹 프로그래머 3명 (Frontend/Backend)
주요 업무 : 웹 사이트 개발/API 개발
지원자격 및 우대사항
- 프로그래밍에 기초가 튼튼하신분 (자료구조, OOP, 테스팅)
- 웹 개발 프레임 워크 경험자 (Django, PHP, Ruby on Rails, Spring, Play) 우대
- Frontend 파트는 HTML/CSS 가능자
Data scientist 1명 (Part-time)
주요 업무 : 랭킹 알고리즘 개선, 추천 시스템 개발
지원자격 및 우대사항
- 랭킹 알고리즘 개발및 측정
- 연관 상품 알고리즘 개발및 측정
- Python/Java/R 사용 가능자 우대 - 통계학/컴퓨터공학 석사 전공자 우대
UX 디자인 2명 (경력) + 기획자 1명 (경력)
모바일 쇼핑은 무한한 가능성을 가졌지만 아직 사용자들에게 최고의 쇼핑 경험을 제공하는 기업은 나타나지 않았습니다. 파괴적인 혁신을 번개장터에서 함께 만들어 봅시다!
업무환경 / 복지
- 연봉 : 2500 ~ 8000 만원 (직무/능력에 따라 다름)
- 오전 10시 ~ 오후 7시 근무 (큰 틀에서만 정한것이고 빡빡하지 않음)
- 책임감을 갖고 스스로 업무를 행할 수 있는 개인 존중 업무환경
- 4대 보험
- 유연하고 넉넉한 휴가 방침
- 사무실에 맨날 음악이 흐르는 회사
- 캐리커쳐가 그려진 개인 명함 제공
- 자기계발비
- 업무 관련 교육 지원(온라인/오프라인 교육)
- 매주 모여서 노하우 공유 시간 갖음
- 언급없이 여성 생리휴가 보장(월 1회 유급, 민감성 고려 월 2-3일의 불특정일 재택근무)
- 간식 무한 제공
- 일하다가 언제든지 소파에서 자거나 탁구 칠 수 있는 자유로움
회사 위치