스토리 홈

인터뷰

피드

뉴스

조회수 1457

경험 부족한 스타트업의 devops 도입기 2편

출처 : 구글 이미지 검색그 동안 테스트코드작성, 코드리뷰를 집중적으로 수행했는데요. 아직은 엔지니어 모두가 걸음마 단계여서 실무리듬에 코드리뷰와 TDD를 끼워넣진 않았습니다. 대신 각자 리서치를 수행하고 매주 수요일 SW 세미나에서 lesson&learn 공유하는 식으로 devops를 공부했습니다.회고2주를 되돌아보고 느낌점을 한 문장으로 요약하면 다음과 같습니다.기술부채의 이자율은 고정 값이 아니다. 시간이 흐를수록 점점 더 높아진다.코드리뷰부터 말씀드리겠습니다. android와 iOS의 경우 앱 개발기간 3개월 동안 커밋한 어떠한 코드도 리뷰하지 않은 상황이었습니다. devops를 계기로 두 프로젝트 간의 코드리뷰를 드디어 시작했는데요. 방대한 코드를 빠르게 이해하기 위해 코드리뷰에 앞서 시각화된 자료를 준비해 아키텍쳐리뷰부터 수행하였습니다. 아니나 다를까 두 클라이언트의 유저스토리가 완벽하게 똑같음에도 불구하고 클래스 설계며 구현상의 코드며 개발 상의 내용이 완전히 갈라져 있음을 목도했습니다.출처 : 구글 이미지 검색iOS, android 환경적 차이로인해 어쩔 수 없이 코드의 다름이 나타나는 경우도 있었지만 대다수의 차이는 코드리뷰를 하지 않아서였습니다. 코드리뷰를 진행하면서 조금 신기했던 사실은 아주 간단한 요구사항(기능)도 개발자 개성에따라 구현법이 각양각생이라는 점입니다. 한 가지 문제에도 다양한 해결법이 존재하는만큼 각 구현법 마다 강점과 약점이 존재하기 때문에 코드리뷰의 필요성이 생각보다 더 크다는 점을 깨달았습니다. 앞으로 클라이언트에는 고도화된 유저스토리가 계속 추가될 예정인데 두 클라이언트간 갈라진 구현상의 설계는 분명히 피처 딜리버리에 병목지점으로 작용될 것입니다. 두 갈래로 나뉜 클라이언트를 어떻게 설계적으로 통합시켜 나갈지 지속적으로 고민해봐야 겠습니다. 또한 더 이상 차이가 벌어지지 않도록 지금부터 추가되는 피쳐들이라도 코드리뷰를 수행하는 환경에서 개발되도록 해야할 의무감도 느꼈습니다.테스트 코드도 마찬가지로 기술부채가 생각보다 많이 쌓였음을 깨달았습니다. 스위처의 클라이언트의 기술적 난이도는 낮은 편입니다. 그런데 그럼에도 불구하고 기존 코드에 테스트코드를 입혀 SUT로 만드는 일은 여간 까다로운 일이 아니었습니다. 기존 코드는 비즈니스로직과 I/O(DB,Network, BLE), UI 코드간의 커플링이 높아서 막상 어느것 하나 테스트코드를 입히기 쉽지 않았습니다. 테스트코드를 작성하기 위해서는 논리단위의 클래스들을 떼어내는 리팩토링이 병행되어야만 했습니다. 테스트코드 없이 작성한 코드는 시간이 지날 수록 테스트코드가 비집고 들어갈 틈 또한 점점 없애는듯 합니다. 그래도 이러한 현상들은 몸소 체험하면서 확신을 갖게된 사실도 있었습니다.테스트코드가 존재함으로서 SUT의 설계는 옳은방향으로 향한다.기존 코드에 테스트코드를 입히려고 이리저리 애쓰다보면 무관한 기능들이 뭉쳐있는 비대한 클래스는 발견하게 됩니다. 테스트코드를 입히기 까다로운 이 거대한 클래스를 쪼개야할 필요성을 느끼게 되는데요. 이 시점에서 개발자는 테스트코드가 있기 전에 절대 하지 않던 리팩토링 고민을 하게 됩니다. 치열하게 고민하는 과정에서 리팩토링에 실패하면 제대로된 테스트코드를 작성하기가 불가능해집니다. 즉, 테스트코드를 작성 했다면 분명히 설계상의 리팩토링이 일어 났을 확률이 높습니다.스위처 어플리케이션의 내 주변의 스위처 목록 페이지를 예를 들어보겠습니다. 해당 스크린에서는 유저가 여러개의 스위처를 확인하기 때문에 몇 가지 비즈니스 룰에 의해 스위처들의 정렬 순서가 결정됩니다. 그래서 유저는 여러개의 스위처가 검색되어도 내가 가장 사용할 확률이 높은 스위처를 최상단에서 만나는데요. 그 정렬 역할을 맡은 클래스가 switcher sorting(이름이 잘 기억안나네요..) 입니다.저희 안드로이드 개발자는 이 클래스를 첫 SUT로 만들기로 결정했고 일 주일간 테스트코드를 작성하려고 노력했습니다. 그러나, 생각보다 쉽지 않았습니다. SW세미나때 코드를 리뷰하면서 발견한 사실인데 swithcer sorting는 단순히 비즈니스룰에 사용되는 정보 뿐만 아니라 꽤나 무거운 무거운 switcher 클래스도 의존하고 있었습니다. 정작 sorting 우선순위를 결정하는데 필요한 정보는 switcher 클래스가 갖고있는 정보들 중 극히 일부분이었는데 말이죠. 이렇게 큰 클래스 때문에 테스트 코드를 짜려면 안드로이드 라이브러리인 BluetoothDevice와 Context 인스턴스를 공급하는 목업 클래스가 필요한 상황이 벌어질 수도 있었습니다. 더 큰 문제는 비대한 클래스로 인해서 test의 fixture를 구성하는데 수십 줄의 코드가 필요 했다는 사실입니다. 자연스럽게 테스크코드를 작성하면서 리팩토링의 필요성을 느끼게 되었습니다. 가까운 미래에 스위처 개발자가 성공적으로 switcher sorting 클래스를 SUT로 만들었다면 이 클래스의 설계 또한 분명 리팩토링을 거쳐 더 좋은 방향으로 거듭 났을 것 입니다.앞으로 2주간 할 일어떠한 일이든 균형이 중요하다고 생각합니다. 마냥 기술부채를 털어낸답시고 리서치와 공부만 하고 있을 수는 없습니다. 동아리가 아닌 회사이기 때문에 시장의 니즈에 맞춰서 분명히 다시 피쳐를 개발하는 속도를 높이는 가속 패달을 밟아야 할 시점이 올 것입니다.출처 : 구글 이미지 검색너무 이르지도 않게 그렇다고 너무 느리지도 않게 적절한 시점에 고객이 불만을 터뜨리지 않을 정도의 SW 안정성을 보장하는 최소한의 devops 수준을 달성해야합니다. 어느정도까지가 devops를 도입해야 오버엔지니어링이 아닌 기술부채를 탕감하면서 동시에 I/O 초중기 목표를 달성할 수 있는지 치열하게 고민하고 부딪혀보며 기민하게 대응해야 겠습니다.앞으로의 2주간 할 일은 다음 질문 두 가지에 대한 대답을 하면서 자연스럽게 도출될 것 같습니다.테스트코드 작성을 위한 TDD를 어떻게하면 엔지니어가 효과적으로 학습할 수 있을 것인가?코드리뷰를 스프린트 일과에 어떻게 자연스럽게 안착시킬 것인가?#스위쳐 #Switcher #개발 #개발팀 #문제해결 #인사이트 #DevOPS #데브옵스
조회수 1521

스타트업, 품질책임은 누가?

스타트업의 생존에 가장 중요한 소프트웨어의 품질에 대해서 이야기를 시작해보자.스타트업의 모든 역량은 소프트웨어와 그것을 기반으로 한 서비스의 안정적인 동작으로 모든 것이 표현된다. 모든 소프트웨어는 단계별로 개발되고 빠르게 개발되기 위해서 기술적 부채가 쌓이게 된다.가장 첫 버전이거나 시리즈 A의 투자를 받기 전까지는 아이디어를 빠르게 구현하는 것에 모든 것이 집중되므로 엄청난 기술적 부채로 인해서 서비스가 동작된 이후에 빠르게 소프트웨어를 거의 대부분 재개발하는 것이 매우 당연하게 된다.아이디어가 구현되고 만들고 있는 소프트웨어의 품질요소에 대해서 누군가는 관리하고, 누군가는 체크하고, 누군가는 기술적 부채의 리소스 자산관리를 취급해야 한다.소프트웨어 개발현장에서는 소프트웨어를 끊임없기 개발하고, 그 개발되어진 소프트웨어와 서비스에 대한 품질에 대해서고 끊임없이 체크하는 것은 정말 당연한 일이다. 그리고, 필자처럼 경험이 풍부하다고 하더라도, 실제 프로젝트의 일부분에 관여해서 프로젝트를 깔끔하게 마무리하거나 부드럽게 진행시킨다는 것은 정말 매우 어렵고 힘든 일이라고 할 수 있다.더군다나, 대부분의 프로젝트들은 시간상의 문제나 기획상 부족한 점들이 계속 드러나게 되는데다가, 개발자의 능력 부분의 문제까지 매우 다양한 변수들이 존재한다. 이런 매우 다양한 문제점들이 발생되어지는 상태에서 소프트웨어 개발일들은 계속 진행되어진다.대부분의 소프트웨어 공학이나 개발 방법론, 요즘 대두되고 있는 소프트웨어 시각화와 같은 이슈들의 핵심은 문제를 도출하고, 그 문제를 어떻게 해결할 것인지를 인지하고 인식하게 하는 것부터 출발한다. 그리고, 대부분 이런 문제들이 진행이 잘 안 되는 이유는 대부분의 개발 조직이 가지고 있는 시스템상의 문제이거나, 다른 이유 때문에 발생할 수 있다는 것을 미리 전제하여야 한다.하지만, 소프트웨어의 품질 부분은 계속되는 문제를 일으키는 것은 매우 당연한 것처럼 발생되어지고, 이런 문제들은 언제나 개발 조직에게 계속되는 이슈를 제기하게 된다. 이렇게 계속되는 문제점들, 계속되는 문제 상활들에 있어서, 이러한 소프트웨어의 품질 부분에 대해서 과연 누가 책임져야 하는 것일까?보통, 성공적인 소프트웨어 개발을 하는 경우에 몇 가지 원칙이 있다. 그것은 소프트웨어 개발을 성공적으로 만드는 매우 중요한 원칙들의 하나이다. 특히, 리더가 되는 경우에는 다음과 같은 부분들을 최대한 조절하는 것들은 매우 당연한 것이고, 이러한 것들에 대해서는 계속적인 관심을 보이게 된다. 그것을 몇 가지 살펴보면 다음과 같다.1. 소프트웨어 개발시에 필요한 요구사항이 계속 변화하는 것을 어떻게 대응할 것인가?2. 어떻게 하면 소프트웨어 개발자들이 특정 부분의 반복적인 작업을 어떻게 가능한 최소화 할 것인가?3. 사용자가 요구한 기능보다 좀 더 효과적으로 소프트웨어를 개발하는 방법은 어떤가?요구사항에 꾸준하게 대응하고, 특정 부분의 반복 작업을 방어하고, 좀 더 개선된 방향으로 소프트웨어 개발을 이끄는 것, 그것이 프로젝트 리더가 해야 할 일중 가장 중요한 일들이다.하지만, 소프트웨어 개발시에 이러한 목적과 방향성은 많은 부분에서 가장 극심한 것은 사용자의 변덕과 요구사항의 변덕스러움이다. 심지어 별거 아니라는 이유로 화면상에 표시되는 문구와 색상을 변경하는 것을 상시 요구하는 것은 어찌 보면 매우 당연한 것일 수 있다.물론, 이 경우에 소프트웨어 개발의 리더는 개발자들에게 이 수정 작업이 시스템과 소프트웨어의 품질을 향상시키고, 고객이나 사용자들에게 매우 의미 있다는 메시지와 신호를 계속 전달하여야 하는데, 대부분 어느 정도 시점에서 이것들을 포기하게 되는 경우가 있게 된다는 점만 주의한다면, 대부분의 개발 조직의 리더들은 이 부분에 대해서 버퍼링을 가장 확실하게 하는 편이다.또한, ‘설계’ 작업이라는 기간 동안에 일어나는 무수한 변동들은 ‘종이’상에서와 ‘개념’상으로만 변경되는 요소이기 때문에, 가능한 이 작업과 ‘기획’ 작업이 진행되는 상황에서 가능한 많은 부분을 처리하는 것이 좋다.소프트웨어 개발 조직의 문제와 시스템의 문제는 어떻게 인지해야 하는가?PM이나 PL이나, 보통 경험이 풍부한 사람들은 새로운 조직이나 새로운 프로젝트, 새로운 사람들과 만나면 관련된 업무의 진행방법이나 소통방법에 대해서 초기에 협의하거나 그 단어의 의미에 대해서 긴밀하게 이야기를 나누지 않으면 매우 힘든 상황들을 경험하게 된다.특히, 영업이나 프로젝트를 기획하는 파트에서 서비스나 소프트웨어의 개발 부분에 대한 이해능력이 조금 떨어지는 경우에는 이러한 단어의 선택이나 의미가 매우 중요해진다. 초기의 요구사항을 도출하고 그 완성 형태에 대해서 어떠한 방법으로라도 기술해야만 이 부분에 대해서 작업 후반부에 이질적인 상황이 발생하지 않는다.소프트웨어 개발 조직이 효과적으로 동작될 때에는 이 부분에 대해서 누가 통제를 하는 것이 아니라, 시스템이 이 부분을 커버하고 있거나, 이 부분에 대해서 인지하고, 시스템이 이해당사자들에게 이 정보를 꾸준하게 제공해주는 방법을 제공해야 한다.시스템의 요구사항과 완성 형태에 대해서 개발 조직과 이해당사자들에게 어떻게 시각화되어져서 보이며, 그 상황들에 대해서 기술하고 있는지, 그리고. 그 목적에 맞도록 개발이 진행되고 있으며, 일정이나 다른 리소스 상의 문제가 없는지에 대해서 꾸준하게 보여야 한다.하지만, 대부분 이러한 상황들은 완성 형태에 대해서 이질적인 서로의 이해도 때문에, 그 결과를 예측하기 어려운 상황으로 빠지는 경우가 있다. 특히, 완성 형태에 대해서 구체적인 모습을 서로 간에 이해를 같이 하고 있지 않는 경우가 대부분이고, 이런 부분들 때문에, 실제 소프트웨어 개발 조직에서는 후반부에 이 문제 때문에 격론을 벌이게 된다.보통, 이러한 완성 형태에 대해서 소프트웨어 개발 조직은 PM(Product Manager)라는 담당자가 그 부분을 통제한다. 프로덕트의 완성 형태를 생각해서 전체적인 상황을 이끄는 것이다. 하지만, 이 역할이 부재하거나, 개발자에게 이 기능이 내려가는 경우에는 소프트웨어 개발시에 시각화되는 부분이 극소로 변해버리거나, 초기에 Task하나만 존재하던 것이 막판에 서브 시스템 이상의 것으로 거대화 되는 경우가 비일비재한다.이러한 것은 PM의 기능적인 요소가 하위나 개발 조직으로 내려가게 되면, 은연중에 개발시에 들어가는 공수나 일정에 대해서는 조금은 야박하게 평가하면서도, 눈에 띄는 기능이나 주된 기능들에 비해서 저평가되는 경우가 많다.그리고, 기술적인 요소라고 평가를 받지 못하는 요소의 경우에도 이러한 경우가 있다. 또한, 개발자가 현재 인지하고 있는 개발의 방법이나 시스템적인 상황에 대해서 일부 유도하고 있는 방향으로 시스템 개발을 이끌면서 이러한 부분들이 극대로 평가받게 되고, 주도적이지 않거나, 신경 쓰지 않는 업무와 기능들은 작은 Task의 하나의 형태로 존재하게 되는 경우가 비일비재한다.물론, 이러한 것들을 해결하기 위한 다양한 기법들이 있으니, 이를 차용하면 좋겠지만. 현재처럼 고속 개발과 적은 팀원들이 움직이는 개발 방법론과 환경에서는 이러한 기법들을 모두 해당 조직에서 체크하기 매우 어렵게 된다.작은 개발팀을 지속적으로 유지시키고, 효과적인 팀으로 꾸려가려면, 가능한 기획단계에서 이런 부분에 대해서 충분하게 체크하고, 세부적인 부분에 대해서 ‘시각화’된 방법으로 개발 조직이 인지할 수 있게 해야 한다.이 부분에 대한 전파가 잘못되거나 완성된 제품의 형태에 대해서 제대로 인지시키지 못하면, 현재의 고속 개발 방법들의 대부분은 실패하게 되거나, 의미 없게 된다. 당연한 것이겠지만. 우연하게 뛰어난 능력의 소유자이거나, 현재처럼 손쉬운 소프트웨어 개발이 가능한 시대에서는 생각 이상으로 소프트웨어를 고속으로 개발하면서, 뛰어난 품질을 유지하는 경우도 많다.당연한 것이지만, 실제 소비자나 고객이 원하는 서비스의 형태로 나오지 않아서, 기능은 동작하지만 아무도 사용하지 않는 서비스를 만드는 경우는 당연하게도 실패한다.소프트웨어 개발의 품질 문제는 누가(Who) 책임져야 하는가?위에서도 여러 가지 언급하였지만, 대부분의 문제들은 시스템에 드러나며, 그 시스템을 만들고 유지하는 내부 조직의 다양한 문제들이 악순환되면서 하나의 문화로 정착되어진 경우를 종종 볼 수 있다. 이는 대기업의 형태이건, 중소기업이나 스타트업이건 나름 내부의 형태로 어떻게든 정착되어진다. 물론, 이러한 문제들이 없는 아주 깔끔한 조직이나 프로세스가 만들어지면 얼마나 좋을까라고 생각하겠지만. 그러한 환경을 만들기 위해서 필요한 리소스는 상당히 크다는 것을 잊지 않으면 좋겠다.언제나처럼 적당한 시스템을 만들고, 그 시스템을 보완할 수 있는 형태를 갖추는 것이 가장 효과적이라고 할 수 있다. 이 경우에 시스템을 통제하거나 통제를 하려는 사람에게 중요한 것은 ‘책임’을 지는 것이고, 그 책임에 맞추어서, 가장 최선의 시스템을 구성할 수 있게 하는 것이다.가장 중요한 것은 시스템의 문제를 확인하고, 그 확인된 문제를 통해서, 더 진보할 수 있는 방향으로 점진적으로 변화하고 있다는 것을 이해당사자들에게 모두 전달할 수 있는 시스템이 되어야 한다. 하지만, 이러한 ‘진보’가 실패하는 경우에는 결국, 대형사고를 만들게 되고, 그 대형사고는 그러한 환경을 만들지 못했거나, 품질관리에 실패한 경우라고 생각하면 된다. 대부분의 조직들은 대형사고들이 터지면, 해당 대형사고를 통해서, 시스템이 개선될 수 있도록 고민하고, 그 해결책을 찾는 것에 상당 부분 리소스를 투입한다.대부분의 문제들은 그 문제가 중첩되어졌거나, 그 문제를 일으킬 수밖에 없는 원인들을 알 수 있게 한다. 이미 문제가 생겼다면, 그 문제를 최대한 조직에 효과적이고 효율적인 환경을 만들 수 있는 배경지식으로 활용하는 것이 그 문제를 해결하는 첫 번째이다. 그러므로, 대형사고가 발생하거나 문제점이 발생하면, 그 문제를 올바르게 인식하는 것부터가 첫 번째 해결방법의 주된 키워드이다. 다음의 유명한 미국의 사례를 예를 들어서, 시스템적인 문제가 발생하였을 경우의 대처상황을 예시로 알아보자.미국 공항 관제사의 졸음 근무가 벌어진 이후에 미국의 시스템이 어떻게 바뀌었는지 보자.2011년 4월 15일 국내 방송사의 뉴스 코너에서 이야기가 나온 간단한 기사를 간단하게 소개하면 다음과 같다. ‘공항 관제사들이 한밤중에 조는 바람에 항공기가 착륙 안내를 받지 못하는 일이 빈번하게 발생하였고, 응급 항공기가 착륙 유도를 받지 못하는 사고도 있었다. 새벽 2시의 미국 네바다 주의 리노 국제공항에서 일어난 일이다.-조종사 : 리노 관제탑, 샤이언 라이프가드 20TN항공기다.응급환자를 태운 이 항공기는 긴급 착륙을 요청하지만 관제탑은 묵묵부담이었다. 이에 무선을 듣고 있던 다른 공항의 관제사가 대신 전화연락을 취하지만, 이 내용에도 아무런 응답이 없다.-LA관제사 : 우리가 그 관제탐에 전화해 보겠다.-조종사 : 중환자가 타고 있어 어쨌건 착륙을 해야겠다.이런 관제사의 졸음으로 인한 사고가 2011년에 교신 중단이 되는 사고가 6건이나 발생하였다는 이 사고에 대해서, 당시 라우드 미 교통장관은 다음과 같이 이야기한다.‘말도 안 되는 일입니다. 이 같은 행동을 용납하지 않겠습니다’.라는 이야기와 함께, 미 전역의 관제를 책임을 지고 있는 연방항공청의 책임자는 매우 당연하게 사퇴하게 되고, 업무의 부담과 실수를 줄이기 위해서 관제탑의 야간 근무자를 2명으로 늘리게 된다.실수를 통해서 시스템이 개선되는 사례는 미국과 같은 선진국에서는 매우 당연한 결과이다.이 사건의 내용을 조심히 살펴보면, 가장 중요한 것은 시스템과 프로세스에 대한 내용이며, 이러한 시스템과 프로세스를 관리하고 정책을 결정하는 일에 대한 책임감과 중요성에 대해서 얼마나 인식하고 있느냐의 문제이다.이런 문제에 가장 큰 책임을 져야 하는 것은 그런 정책과 결정 과정을 만들고, 유지하는 사람들의 몫이라는 것이다. 물론, 이와 유사한 사례의 사고도 몇 건 더 있었다. 리노의 사건 이후에도 발생한 미국 마이애미 공항에서 관제사가 깜빡 잠드는 사례가 있었으나, 당시 12명의 관제사가 함께 근무 중이었기 때문에, 별다른 사고가 없었고, 그 문제의 관제사에게 정직처분이 내려졌다는 것이다.앞서 이야기한 사건 때문에 FAA에서 관제시스템의 운영방식의 전반적인 재검토작업을 통해서, 관제사 노조 측은 수면부족과 과로로 인해 문제가 발생하고 있다는 점과, 야간 교대 근무일 정의 조정이 필요하다는 주장도 같이 이어졌지만, 가장 중요한 것은. 단 한 명의 야간 관제사만 근무하게 되면 대형사고를 발생시킬 수 있다는 점을 시스템에서 대응을 하지 않았고, 이를 금지하지 않았기 때문에, 미국 네바다주 리노에서는 사고가 발생할뻔한 것이다.당연한 것이지만, 이런 경우에는 이 문제를 사전에 예측하지 못한 시스템의 총괄 책임자가 그 책임을 지는 것은 매우 당연하다.하지만, 이러한 식의 책임을 지는 곳은 ‘시스템’을 계속 업그레이드하거나, 발전적인 방향으로 시스템을 진화시킬 수 있다. ‘문제’가 발생되는 이유와 근본적인 부분에 대한 대응책을 마련하기 때문에, 한 번의 실수를 통해서 시스템은 언제나 보완되어갈 수 있기 때문이다.하지만, 한국에서 KTX 3중 추돌 사건이나 세월호 사건을 생각해보자.결론만 이야기하자. 뉴스에 발표된 내용을 참고로 한다면, ‘대구역을 통과하는 서울행 KTX를 무궁화호 열차가 출발 신호보다 빨리 운행하면서 서울행 KTX측면을 접촉해 선로를 이탈시켜 하행선 KTX와 접촉한 사고’라고 공식적으로 발표가 되었다.관제실, 기관사, 여객전무 등 ‘3각 체제’가 부실했을 가능성과 신호체계의 오류 가능성을 염두에 두었다고 한다. 하지만, 철도 운행에는 최소 4단계 이상의 안전조치가 규정되어 있으며, 중앙관제실의 자동 전산 제어시스템, 대구역 관제실의 제어시스템, 출발 신호기, 여객전무의 수신호와 무전, 기관사의 확인 및 복명의 절차와 프로세스가 있다고 한다.그런데? 왜 사고가 발생하였을까?가장 큰 문제는 비숙련 대체 투입인력이라는 것에 대해서 먼저 이해하고, 시스템적인 문제에 대해서 생각하자. 이와 같은 사고의 핵심이 인재에 있건, 시스템의 구조적인 문제이건, 하다못해 테러라는 이야기까지 공통점을 하나 체크하자면, 그것은 시스템에 대한 부분에 검증 부분이 허술했다고 이야기할 수 있다.드러난 몇 가지 사실 들을 나열해본다면, ‘매뉴얼’을 무시해서 일어난 사고라고 생각할 수 있다. 지난달에 스페인에서 고속열차의 탈선사고 또한 이러한 기본적인 매뉴얼을 제대로 지키지 못했기 때문에 대부분 발생한다.당연하지만, ‘인재’가 발생되거나 ‘인적과실’이 발생하는 경우에 가장 중요한 것은 ‘시스템’과 ‘서비스’, ‘인프라’에 그 책임을 일차적으로 물어야 한다. 그런 상황을 발생시키게 근로자를 제대로 교육하지 않았거나, 숙련된 전문인력을 제대로 배치하지 못하였거나, 관련 프로토콜의 오류나, 점검이 되어야 할 테스트 케이스가 부족해서 발생한 것이거나. 특이사항에 대한 대처가 되지 않았던 것이기 때문에, 1차적으로 ‘담당자’에게 책임을 묻기 이전에, 시스템을 관장하고 운영하는 책임자가 그 책임을 지어야 한다.스페인 산티아고 고속열차 탈선사고와 문제점도 같이 살펴보자.스페인 산티아고 데콤프 스텔라에서 발생한 사고 뉴스를 살펴봐도, 분명. 전적으로 기관사에게 책임이 있을 수 있지만, 이런 사고가 발생하지 않도록 많은 안전 대책 매뉴얼과 시스템이 제대로 작동하지 않았다고 평가를 해야 한다. 이런 심각한 상황에 대한 모든 책임을 ‘기관사’에게 부여하는 것은 매우 무책임한 행동 아닐까?기사에 언급되었던 대로 시속 80킬로미터 주행구간에서 190킬로미터로 주행했다고 하는데, 만일 해당 기차 시스템에서 그런 부분을 제대로 파악해서, 시스템이 보호했다면, 이런 사고는 아예 일어나지 않았을 것 아닌가? ( 누가 해당 시스템의 구간단속 부분에 대해서 허가한 것이고, 소프트웨어 품질 요소를 평가한 것일까? )당연한 것이지만, 현대의 최신 소프트웨어와 시스템들은 대부분 엄청 복잡하다. 당연스럽게도 인간의 한계에 대해서 제대로 인식한 형태로 디자인되어야 한다. 결론적으로 스페인 시스템은 비록 80킬로미터 제한 구간임에도 불구하고, 최대속도 200킬로미터 이하에서는 ‘인간’이 그 부분을 제어해야 하는 어처구니없이 황당한 시스템을 만들고 허가를 준 것 아닌가 한다.결론은 간단하다. 80킬로미터 구간을 설계하고 허가한 당국도 책임을 지어야 하며, 해당 구간에서 속도를 자동으로 체크하거나 조절할 수 있는 시스템을 설계하고 만들지 못한 제작사도 책임져야 하며, 이런 전체적인 부분을 감리하지 못한 감리기관도 책임져야 하고. 더 중요한 것은 이런 상황에서 기차를 운행하게 한 관리당국 또한 책임을 져야 한다.단언컨대 인간의 실수만으로는 사고는 발생하지 않는다. 하지만, 인간의 실수를 방어하기 위한 안전장치들이 있어야 하며, 이런 것에 대해서 시스템에 반영하지 않는 것들에 대해서는 시스템의 책임자들은 인지하고 그 안전장치들을 만들어야 한다. 하지만, 가장 안전에 신경을 많이 쓰고 있는 유럽에서 벌어진 일이기에, 도대체 이런 사고가 왜 발생하였는가는 정말 의아하다.필자가 유럽여행 중에 느꼈던 안전에 대한 경험필자가 유럽에 산업 계분들과 같이 시장개척단으로 유럽에서 프랑스를 갔을 때의 경험이다. 관광버스를 대여하여 운행을 하였는데, 관련 일정이 수정되면서 방문하려는 지역이 변경되었을 때에, 해당 관광버스의 운전기사는 거리가 멀어지고 운행시간이 길어진 것에 대해서 매우 난색을 표명했다.그것은, 관광버스의 운행시간이 하루 6시간으로 제한되어 있으며, 해당 기록은 관광버스의 블랙박스를 통해서 통제받으며, 더 이상 운행할 수 없다고 하였다. 그래서, 필자의 일행들은 별도의 다른 버스를 임대하여 운행을 했던 기억이 있다.이처럼, 안전이란 ‘프로세스’를 얼마나 철저하게 지키느냐의 관점이다.소프트웨어 개발에서 꼭 필요한 시스템과 서비스가 없는가?현재의 소프트웨어 개발과 관련된 프로세스들은 생각 이상으로 자동화가 되어 있고, 꽤 많은 시스템들이 공개 소프트웨어로 만들어져 있다. 현재 내가 속한 기업과 조직이 다음과 같은 환경을 갖추고 있는지 확인해보자. 아래에 나열한 시스템이 빠져있거나, 구성되어 있지 않고, 그러한 시스템을 구축하려 준비나 계획도 없는 기업이라면 해당 기업은 소프트웨어 개발에 있어서 품질이나 책임에 대해서 명확하게 구분할 능력도, 그럴 마음도 없는 기업이라고 예측하기 좋다.하나. 소프트웨어 개발은 하는 버전 컨트롤도 하지 않는다소프트웨어 개발회사에서 가장 귀중한 자원은 ‘소스’이다. 그 ‘소스’를 어떻게 관리하고, 대우하느냐가 가장 중요한 것이라고 생각하는 것은 매우 당연한 것이지만, 생각 이외로 이러한 ‘소스’를 제대로 된 시스템에서 관리하지 않는 기업이 많다.‘소스’를 제대로 관리하지 않는다면, 그 ‘소스’를 개발하는 개발자들에 대한 대우나, 처우는 얼마나 엉터리 인 것인지 잘 알 수 있을 것이다. 그리고, 대부분 기업은 하나의 서비스나 설루션에 집중하는 경우가 많은데, 이러한 ‘버전 컨트롤’을 하지 않는다는 것은, 그러한 ‘지식’과 ‘경험’을 제대로 관리하지 않는다는 것이고, 결론적으로는 상품이나 서비스를 개발하는 회사가 아니라, 전형적인 ‘SI’에 집중하거나, 당장의 돈벌이에 집중하는 회사일 가능성이 매우 높다.둘. 자동으로 빌드하고, 자동으로 테스트하는 시스템이 있는가?대부분의 자동화가 가장 효과적으로 그 능력을 발휘하는 경우는 요즘과 같은 환경에서는 자동으로 빌드하고, 자동으로 테스트하는 환경을 구축하는 것이다. 필자가 보기에는 개발자의 업무 중의 20% 정도는 이러한 빌드와 테스트하는 시간에 상당 부분 반복적인 작업을 할당하여 사용하고 있다.개발자들을 우대하고, 개발자들의 리소스를 귀중하게 생각하고 있다면, 개발자들이 반복적으로 투여하고 있는 업무를 어떻게든 자동화하는데 집중하는 것은 매우도 당연한 것이다.셋. 전체적인 소프트웨어 개발을 모니터링하고 있는가?현재의 단계, 문제가 있는 상황. 그리고. 개발자들 간의 소통과 경험들, 고객과의 업무나 지시, 요구사항들에 대한 내용들이 단편적인 종이들과 개개인의 기억에 의존하는 경우인가를 확인해보면 된다. 전체적인 모니터링을 하지 않는다는 것은, 각각의 업무에 대해서 통제도 불가능하고, 업무의 기능별 분화나, 업무들을 공동 작업하는 상황들을 만들기도 매우 어렵다.넷. 테스터의 롤이 별도로 있거나 테스팅 환경을 구축하고 있는가?특정한 사람이 있거나 하는 것이 아니라, 소프트웨어 개발은 개발자가 테스트를 하면, 버그를 찾기 매우 어렵다는 점이다. 자신이 코딩하였기 때문에 해당 룰로만 테스트를 진행하고, 의미 없는 테스트 시간만 허비하는 경우가 많다. 가장 잘되어있는 조직은, 크로스 체크를 하는 테스팅 규칙이거나, 테스팅의 업무의 중요성을 잘 알고 있는 경우이다.다섯. 버그 트랙킹 시스템을 구축하고 있는가?문서화의 척도나, 소프트웨어 개발회사의 이슈, 버그 등의 상황들을 전체적으로 관리하고 있느냐와, 관리하고 있지 않느냐의 차이는 정말 크다. 특히, 관리자의 경우 이런 문서화나 시스템이 존재하지 않게 되면, 실질적인 통계나 환경에 대한 정보보다는, 개인적인 감에 의해서, 시스템의 프로세스나 경험을 반영하는 경우가 많아지게 된다.그리고, 개발자들 간에도 서로 간에 유의미한 대화나, 경험들이 축적되게 된다. 또한, 버그가 발생되어지고, 버그를 수정하는 과정들이 투명하게 되면서, 해당된 정보들에서 파생되는 지식과 경험들을 더 많이 얻게 된다.이상의 과정들의 기본도 갖추고 있지 않는 회사라면, 특정 문제가 발생하였을 때에 그 원인을 추적하거나, 그 문제를 알기 위해서는 별도의 작업을 수행해야 하고, 실제 조직원들이 그 문제를 찾기도 어렵다. 대부분의 제대로 된 기업과 조직은 이러한 문제들을 방어하기 위해서 프로세스나 업무를 시각화하려고 하는 것이고. 그 시도를 통해서, 프로세스를 개선하려 한다.마지막으로 소프트웨어 개발의 책임은 누가 질 것인가?소프트웨어 개발에 있어서, 성공적인 소프트웨어가 개발되어지는 것 이외에, 실패를 하게 되었을 때에 소프트웨어 개발에 대한 책임은 누가 져야 하는가? 결국, 책임은 이해당사자들 모두가 지게 되지만, 가장 큰 책임을 지게 되는 것은, 그 소프트웨어의 프로덕트를 요구했으나, 제대로 된 제품을 받지 못하게 된 고객이 가장 큰 책임을 지게 될 것이다.제대로 된 시기나 제대로 된 제품이나 서비스를 받지 못하게 되는 것이 가장 큰 책임이다. 대부분의 소프트웨어들은 이런 고객들에게 최대한 서비스나 제품들이 효과적으로 개발되고 수행되고, 서비스되는 가에 대해서 끊임없이 경고하고, 정보를 제공해주는 방법들을 얼마나 많이 시각화하느냐에 집중되어져 있다.소프트웨어의 개발시에 시각화는 이런 부분들을 전반적으로 포괄하고 있다. 소프트웨어의 품질은 꾸준하게 요구사항에서 발생되어질 문제와 최종 제품의 모습을 어떻게 상상하고, 그것을 대응할 것인가에 대해서 계속적인 활동을 하는 것이다.소프트웨어 방법론이나 필요한 수많은 기능들과 체크하는 방법들은 이러한 것들을 어떻게 게 효과적으로 진행하면 가능한 것인가에 대한 수많은 테스트 자료일 뿐이다.최종적으로 이야기하자면, 소프트웨어 개발이 실패한다면, 그것에 대한 책임은 그 소프트웨어를 개발한 모든 사람에게 있는 것이라는 점이다. 가장 훌륭한 소프트웨어 개발 조직은 똑같은 실패를 다시 경험하지 않는 것이다.문제가 있는 상황을 인지하고, 그 상황을 해결하고, 그 상황을 변화시키려는 조직은 언제나 유기적이고, 유동적으로 그 문제를 해결할 수 있게 한다. 다만, 내가 속한 조직이 그러한 방향으로 진화하고 있는 조직인지? 그러한 문화나 방향성을 이해하고 있는 조직인지에 대해서는 또 다른 고민을 하게 할 것이다.소프트웨어 개발의 가장 근본적인 원칙은 ‘특정 형식에 얽매이는 행위야 말로 삽질이다’라는 말로 이번 이야기의 마무리 말로 정리하겠다.
조회수 830

클릭 전환과 구매 전환

안녕하세요 대한민국 셀러들의 성공적인 아마존 진출을 도와주는 컨설팅 회사이자 대행사인 컨택틱의 이이삭 대표입니다. 오늘 다룰 주제는 ‘클릭 전환과 구매 전환’입니다. 업계에서는 CTR과 CVR이라고 부르는데요. 이는 각각 Click Through Rate, Conversion Rate의 약자입니다. 지금까지 여러분과 함께 키워드 인덱싱을 통해 상위 노출을 위한 여러 방법들을 살펴보았습니다. 상위 노출이 되지 않더라도, 시장 진입 초기에 다양한 고객 검색어에 대하여 자신의 상품이 걸리는지(인덱싱 되는지) 확인이 된다면 잘 따라오고 계신 겁니다. 다음으로 셀러들이 생각해야 하는 것은 상위 노출된 검색결과(listing) 중에서 경쟁사의 제품이 아닌, 나의 상품을 클릭하도록 만드는 방법입니다. 이 과제를 제대로 수행하기 위해서는 다음의 4가지를 고려하셔야 합니다. 지역은 다르지만, 전자상거래의 본질적 속성은 같습니다. 구매결정이 브랜드의 영향을 받지 않는 시장이라는 전제 하에, 검색을 통해 나온 리스팅들간의 경쟁 속에서, 내 상품을 최소한 ‘클릭’이라도 하게 만들기 위해서는 소비자에게 Main Image를 통해 시각적 자극을 주고, 최저가 또는 이에 준하는 가격 제시를 통해 고객에게 가성비(價性比)와 가심비(價心比) 모두를 충족시킬 수 있다는 인상을 심어줄 필요가 있습니다. 하지만, 경쟁사들도 클릭 전환에 영향을 미치는 구성요소를 알기 때문에 이미지와 가격은 같은 페이지 내의 상품끼리 큰 차이가 없을 수 있습니다. 따라서, 다음으로 고객이 고려하는 것은 바로 ‘리뷰’입니다. 우리도 소비자일 경우 리뷰 개수와 평점을 고려하여, 제품의 품질을 추측하거나 소비에 대한 ‘안정감’을 느끼는 것처럼 해외 고객들도 별반 다르지 않습니다. 셀러의 입장에서는 상위 페이지와 자신의 상품이 노출된 페이지의 리스팅의 리뷰 개수와 평점을 기준으로, 고객의 클릭 전환을 높이기 위한 기준 수치를 세울 수 있을 것입니다.   하지만 만약, 고객이 클릭만 하고 스크롤을 쭉 내리고 그냥 나가버린다면, 그것보다 아쉬운 게 없겠죠. 아무리 CTR이 높아도 실제 ‘매출’이 발생하지 않습니다. 물론, CTR이 높으면, 그만큼 구매로 이어질 가능성이 높은 잠재 상품으로 분류할 수 있습니다. 다만, 양면적으로 PPC를 통해 유입된 트래픽이라면, 고객의 클릭이 발생할 때마다 비용을 지불하게 되고, 구매 전환으로 이어지지 않는다면, 오히려 고객이 여러분의 상품을 클릭하지 않는 것보다 못한 상황이 발생하게 되는 것입니다. 따라서, 고객들이 구매까지 전환되지 않는 문제의 원인을 제대로 파악하여 밑 빠진 독에 물 붓는 상황을 미연에 방지할 수 있어야 합니다. 구매 전환은 아래 6가지 항목의 영향을 받습니다. 첫째, Other Image의 중요성을 간혹 간과하시는 분들이 계십니다. 보충 이미지는 말 그대로 ‘보충’의 성격이 있어야 합니다. 예를 들어, 여러분이 비데를 판매한다고 가정해보겠습니다. 보통 보충 이미지를 통해 상하좌우 이미지나 확대 이미지를 통해 상세한 모습을 제공하지만, 미국 소비자들이 한국 전자제품을 살 때 걱정하는 건 따로 있습니다. 바로 Voltage, 110V와 220V 차이죠. 110V에도 가능한 제품이라면 ‘당연히’ Description에도 언급을 해주셔야 되지만, 최근 인간의 정보처리 과정이 ‘이미지’ 중심이기 때문에, 보충 이미지를 통해 고객에게 ‘확신’을 줄 수 있어야 합니다.   둘째, Bullet Points는 말 그대로 상품의 특장점과 유의사항을 고객이 ‘상품 구매’ 버튼을 누를 수 있도록 상세하게 설명하는 것이 중요합니다. 특히, 제품의 가격 차이가 크게 발생하지 않는다면, 시장 초기 진입자들은 최대한 정성을 들여서 작성할 필요가 있습니다. 셋째, 리뷰의 질이 중요합니다. 소비자들이 바보가 아닙니다. 아르바이트생들이 쓴 것 같은 리뷰를 보면 그 개수가 많고 평점이 높아도 의심을 할 수밖에 없습니다. ‘현지’ 표현을 강조한 이유가 바로 여기에 있습니다. 중과부적(衆寡不敵)이라는 사자성어가 있죠. 적은 수는 많은 수를 대적할 수 없다는 뜻입니다. 중국의 많은 셀러들이 지인과 업체를 이용하여 리뷰 작업을 실시하게 되면 인위적으로 리뷰 개수와 평점을 높일 수 있기 때문에, 미국의 소비자들은 Review Quality를 구매의사결정 과정에서 중요하게 생각할 수밖에 없는 것입니다. 넷째, Questions입니다. 여러분이 생각하시는 Q&A와는 조금 다릅니다. 물건을 직접 구매한 사람들이 질문을 올린 사람들에게 답변을 남길 수가 있습니다. 물론 판매자도 답변을 달 수 있습니다. 다만, 고객의 입장에서 실제로 물건을 구매한 사람의 만족도가 낮거나, (사실 여부를 떠나 악의적이든 그렇지 않든) 좋지 않은 답변을 봤다면, 물건을 구매하려 했던 잠재 소비자도 Q&A를 본 이후 머뭇거릴 수밖에 없을 것입니다. 그래서 셀러들은 단순히 물건 판매를 넘어서 사후 관리를 철저하게 할 필요가 있습니다. 그래야 특정 의문을 가져서 해당 상품을 구매할 것을 망설이는 신규 고객들이 ‘구매’에 대한 확신을 가질 수 있기 때문입니다. 마지막으로, 여러 프로모션과 가격은 초기에 빠른 구매전환을 유도하기 위한 일종의 loss leader 전략입니다. 저번 글에서 아마존의 상위 노출 알고리즘 중에 ‘판매량’도 중요 변수라고 말씀드렸습니다. 시장 진입 초기엔 인지도가 낮고 위에서 언급한 모든 수치들이 낮게 나올 수밖에 없으므로 Promotion과 Benefit 등으로 ‘BUY’ 버튼을 누르게 만드는 것이죠. 여기까지가 구매 전환과 클릭 전환을 위해 반드시 필요한 항목들을 말씀드렸습니다. 간단히 말해서, CTR과 CVR이 동시에 높은 수치를 기록하는 황금알을 찾는 게 중요합니다. 그러나, 장기적으로 아마존에서 성공하기 위해서는 한 번 구매한 고객을 유지하고 재구매까지 일어나게 할지, 그리고 구매 패턴을 이해하여 그 분석 결과를 향후 판매에 어떻게 이용할지 전략을 고민해야 합니다.   저희 컨택틱에서는 주문할 장바구니 단계에서의 업셀링(Upselling), 1개 이상 구매 시 다른 상품을 구매하면 할인 혜택, 이메일 팔로우업, 내 상품을 주문하는 고객들이 주로 밀집된 지역의 분석과 지역 집중 off amazon marketing 등의 Mix 전략을 통해 고객사들에게 마케팅 솔루션 등을 교육 및 제공하고 있습니다. 이번 글을 굉장히 길었습니다. 그만큼 ‘구매 전환’이 중요합니다. 왜냐하면, 고객을 두 번 생각하게 하는 순간, 두 번 다시 고객을 잡을 수 없을지도 모르기 때문입니다. 컨택틱의 모든 교육은 파트너인 글로벌셀러창업연구소와 접수하고 진행합니다. 교육 신청은 아래 링크나 글로벌셀러창업연구소의 홈페이지를 통해 접수 가능합니다. 오프라인 아마존 입문 과정오프라인 아마존 기초/심화 과정온라인 아마존 입문 과정 그럼 오늘도 즐거운 글로벌 셀링 되세요! 컨택틱  서울특별시 강남구 강남대로 62길 11, 8층 (역삼동, 유타워) 대표 전화: 02-538-3939     이메일: [email protected]     홈페이지: https://www.kontactic.com   네이버블로그: https://blog.naver.com/kontactic    카카오브런치: https://brunch.co.kr/@allaboutamazon감사합니다.              
조회수 2044

모든 기업가들이 블로그를 해야되는 5가지 이유

Fastcomapny에서 5 Reasons Every Entrepreneur Should Start Blogging 이런 기사가 포스팅이 되었는데 1bytebeta의 CEO인 Shlomi Nissan가 쓴 글이고 그의 블로그는 다음과 같다.이 기사의 5가지 이유를 요약해보면1.블로깅은 아이디어를 발전시킨다.글쓰기는 단지 아이디어를 전달하는 것이 아니라 그 과정에서 새로운 것들이 만들어지기도 한다. -Paul Graham, Y-Combinator2.블로깅은 당신의 비전을 명료하게 하고 이해하는데에 도움을 준다.당신이 이해가능한 완벽한 문장으로 자신의 아이디어를 써야할 때 이것은 더 깊고 명료한 사고를 하게끔 자신을 몰아넣는다.-Jeff Bezos, Amazon3.블로깅은 당신의 팬을 만드는 데에 도움을 준다.우리는 글쓰기를 통해서 단순한 고객이 아닌 우리의 팬을 만드려고 해야한다.-David Heinemeier Hansson, Danish programmer and the creator of the popular Ruby4.블로깅은 당신을 산업의 전문가로 만들어준다.내가 공개된 일을 할 때 나는 매번 더 열심히하게 된다. 처음하는 것처럼그것은 믿기 힘들만큼 강력하다. -Fred Wilson, American businessman, venture capitalist and blogger5.블로깅은 당신에게 기업가정신에 대해서 가르쳐준다.자기 훈련에 있어서 정보를 접하는 것보다 글쓰기를 하는 것이 더 나은 수단이다.-andy grove , Intel필자는 2014년 7월 22일에 shareme 블로그를 오픈하였다. 그리고 2016년 10월 20일 약 2년 3개월이 지난 시점에 1,000개 포스팅이 완료되었다. 사실 블로그를 하기 전만 해도 6개월 정도가 걸렸다. 어떻게 블로그 컨셉을 잡아야될지 뭐부터 시작해야될지 네이버 블로그를 해야될지 티스토리를 해야될지 구글의 blog를 해야될지 고민이 많았다.결론을 내렸고 블로그의 원칙은 다음과 같았다.1.개인 데이터베이스최현일의 삶에서 일어나는 모든 것들이 대상이지만 기억할 만하고 의미있는 것들을 위주로 기억할 것.2.티스토리(tistory)숫자로 표현되고 주제별 분류가 쉬운 블로그를 선택할 것.이렇게 2개의 원칙만 정하고 일단 시작하니깐 서서히 감이 잡혔다. 어떤 글의 카테고리를 추가할지 어떻게 컨셉을 잡아가야할지. 그리고 처음 콘텐츠는 거의 정말 개인 일기장의 형태로 써내려가서 다른 사람이 쉽게 보기엔 가독성이 떨어지는 UX의 형태였는데 점차 다른 독자도 편하게 읽을 수 있게끔 UX를 개선해 나갔고 나중엔 GA(google analytics)를 사이트에 심어서 어떤 콘텐츠들이 반응이 좋은지 보기 시작했다.1년 5개월 정도 236,250자  A4로 315장을 아날로그로 내 생각을 써내려갔다.원래는 종이에 펜으로 글을 쓰는 것부터 시작하였다. 글쓰는 요령/동기는 아티스트웨이라는 책에서 영감을 받았고 계속 글을 써내려 갔는데 좋은 생각들을 종이에만 놔두는게 아쉬워서 디지털의 형태로 변환했다.(블로그) 그리고 그 정보/생각들을 블로그를 통해 사람들과 같이 공유한 것이다.(블로그를 하면서 손으로 직접 글쓰기도 병행했다. 손으로 글을 쓰는 것과 타자로 글을 쓰는 것과는 또 다른 장.단점이 있는데 개인적으로 종이에 펜으로 글을 쓰는 것은 상대적으로 더 깊게 사고,고민할 수 있는 것 같다.) 블로그를 2년 넘게 계속적으로 하다보니 정말 위의 기사에서 말한 5가지 경험들을 다 겪게 되었다.필자가 블로그를 하면서 가장 크게 도움받는 두 가지를 꼽는다면1.새로운 뇌가 생겼다.디지털 뇌. 블로그에 와서 주제,키워드 검색만 하면 나의 진짜 뇌가 기억하지 못한 정보들을 거의 다 찾을 수 있다.그리고 사람들과 얘기할 때 정보/근거들을 모바일로 블로그에서 검색해서 보여준다.2.회사 이력서, 프로그램 제안서 같은 것들을 제출할 때는 블로그 링크를 다 걸어서 포트폴리오로 증명했다.굉장히 편하고 담당자들도 좋게 보는 눈치다.필자는 개인적으로 블로그는 많은 사람들이 했으면 좋겠다는 생각을 한다.왜냐하면 본인이 자기 인생에서 정말 간절한 것이 있고 진짜 이루고자 하는 뜻이 있다면 블로그는 그 목적을 달성하게 도와주는 정말 훌륭한 도구이기 때문이다.블로그가 나를 그렇게 도와주었고 앞으로도 그럴 것이라고 믿어 의심치 않는다.모든 사람들은 하나의 small media다. 이제는 자신의 미디어를 중심으로 사람을 모으고 나의 연결을 촉진하는 동시에 나를 통해 연결된 그 사람들끼리도 같이 충돌시키는 네트워크를 잘 활용해야되는 시대이다.블로그는 정말 재미난 일이다. 우연히 한 해커톤 행사장에서 나의 블로그를 구독한 사람을 만나기도 했고 친구들은 나의 글을 통해 영감을 받으며 고마움을 전하고 있고 모르는 사람이 콜드콜을 요청해 한번 꼭 만나보고 싶다고 해서 직접 만났고 서로 좋은 영향력을 주고 받고 있다.블로깅은 단순히 인터넷에 콘텐츠를 비트값으로 남기고 공유하는 일이 전부가 아니라 실제와 이 세계를 연결하는 미디어이다.우리는 블로그에 대해서 좀 더 심도있는 이해를 위해서 글쓰기의 가치를  이해할 필요가 있다. 사실 블로그라는 것은 글쓰기라는 본질적 속성을 인터넷에 맞게끔 디자인한 것이다.건축가 중 백희성이라는 분이 계시는데 정말 창의적이시고 놀라우신 분이다.(유투브에 세바시나 다른 동영상들이 많으니 한번 꼭 보길 바란다. 보이지 않는 집 이 책은 주위 지인들이 극찬한 책) 백희성님은 블로그 형태는 아니지만 '자기관찰노트'라는 노트에 펜으로 여러 감정의 자신에 대하여 글을 쓰신다. 이 동영상에서 말씀하시길 이 자기관찰노트가 자신의 삶에 있어서 굉장히 많은 것들을 바꾸어놓았다고 하신다.블로깅의 본질은 글쓰기에 있다. 이것을 이해하고 블로깅을 하면 더욱 도움이 된다.위에 사진을 첨부해 놨듯이 필자도 종이에 아날로그로 글쓰기를 시작하다가 블로깅을 시작했다.글쓰기는 현재의 나와 과거의 나에 대해서 깊게 들여다 보게 해준다.인간의 진보와 성장은 과거와 현재에 대해 스스로가 깊게 돌아보고 곱씹을 때 가능했다. 글쓰기는 자신의 진실한 모습에 대해 마주하고 사색하는 위대한 방법론 중에 하나다.그런 글쓰기가 인터넷화 되면서 블로그의 형태로 큰 효용성을 가져왔다.글자가 종이에 머무를 때는 공유하기가 힘들었고 그 글을 매개로 사람들의 연결이라는 건 있을 수 없었다.블로그는 사람들의 삶의 양식들을 바꿔나가고 있다. 책 출판의 형태만 보더라도 블로그에 포스팅 하나 하나가 모여 책이 되는 시대다.우리는 우리의 감정과 생각과 아이디어, 의견,경험들을 글쓰기의 형태로 기록할 수 있다. 그리고 그것들을 블로그의 형태로 활용할 때 더욱 자신의 기회를 증대시키고 자신의 브랜딩을 확산시키는데 용이하다. 우리는 이것을 적극적으로 활용할 필요가 있다고 생각한다. 앞으로도 블로그는 디지털 뇌로서 좋은 도구가 될 것이다.이 글을 통해 많은 사람들이 블로그를 잘 활용하여 좋은 결과물들을 내기를 희망한다.언어는 쓰여지지 않으면 잊혀진다.나의 이야기는 기록되어지지 않는다면 그 누구도 기억해주지 않는다.우리가 기록하기 시작했을 때 그 다음에 우리는 더 나은 것들을 기록할 수 있다. 역사도 그렇게 기록되어진 것들을 발판 삼아 진보해왔다.#페오펫 #peopet #인사이트 #마케팅 #마케터 #블로그 #경험공유 #조언
조회수 1234

채널 데스크 프론트엔드 기술 스택

오프라인 고객 분석 솔루션 워크인사이트를 개발해 온 조이는 최근 온라인 접객 서비스 채널을 런칭했습니다. 이 글은 채널과 관련된 기술 블로그의 첫번째 글로 채널 데스크 프론트엔드(웹, 윈도우, OSX)의 기술 스택 및 개발 환경을 소개하도록 하겠습니다.React채널 개발을 처음 시작할 당시 (지금으로부터 1년 전) 에 워크인사이트 대시보드 및 기타 사내 툴에서는 AngularJS 1을 사용하고 있었습니다. 비교적 적은 코드로 복잡한 애플리케이션을 빠르게 만들 수 있는 점에는 만족했지만 퍼포먼스면에서는 아쉬운 부분이 많았습니다. 따라서 새로운 프레임워크 및 라이브러리를 리서치 했고 매우 가볍고 렌더링 퍼포먼스 면에서 AngularJS 1 대비 우위에 있던 React 를 사용하기로 결정했습니다.컴포넌트의 설계 패턴은 Redux를 만든 Dan이 제안한 Container 와 Presentational 컴포넌트를 구분하는 방식으로 설계하고 있습니다. 따라서 Container 가 data fetch 및 update 등의 액션을 실행하고 Presentational 컴포넌트들을 조합하여 렌더링을 하게 됩니다.React를 실제 1년째 사용해 본 결과 저를 비롯한 팀원들은 매우 만족하고 있습니다. 구조, 스타일, 동작을 한 컴포넌트로 묶어 재사용성이 매우 높아졌으며 React의 휴리스틱한 Dom diff algorithm 덕분에 렌더링 퍼포먼스에서도 많은 이득을 얻을 수 있었습니다.Facebook Flux Utils아키텍쳐는 페이스북이 제안한 flux 철학에 따라 설계되었습니다. flux를 구현하기 위한 기본적인 유틸리티 기능을 제공하는 Flux Utils을 사용합니다. Flux의 많은 구현체 중에 요즘 가장 인기인 Redux도 고려했었습니다. 저희가 프로젝트를 시작할 당시에 Redux는 5~6개월밖에 되지 않은 프로젝트였고 거의 Dan의 1인 프로젝트였기 때문에 향후 메인터넌스를 장담할 수 없다고 판단했습니다. 그보다는 페이스북이 만든 Flux Utils가 그런 면에서는 더 안전할 거라고 생각했던 것이죠.약 1년 정도 Flux Utils로 개발해오며 몇 가지 문제를 겪게 되었습니다. 애플리케이션이 커지면서 관리해야할 State가 많아지고 그들 사이의 의존성 관리 때문에 Store의 복잡도가 빠르게 증가했습니다. 그에 따라 테스트가 어려워지고 올바른 유닛테스트를 위해서는 테스트 코드 역시 매우 복잡해지는 문제가 있었습니다.그래서 Redux를 다시 리서치하게 되었고, 결론적으로 “단일 Store, 다수Reducer” 라는 Redux의 철학을 통해 State 관리 로직(Reducer)을 단순하고 테스트도 쉽게 유지할 수 있겠다는 생각을 하게 되었습니다. 뿐만 아니라 그 동안 설계와 관련되어 고민하고 필요한 경우 저희 스스로 개발해서 사용하던 많은 부분이 Redux의 서브 프로젝트 형태로 (redux-actions, redux-thunk, reselect 등) 개발되어 사용되고 있는 것을 발견해서 Redux로의 마이그레이션을 결정했고 현재 진행 중에 있습니다.Electron이 글의 도입부에서 이야기한 것처럼 채널 데스크는 윈도우용, OSX용 애플리케이션으로도 제공됩니다. 채널 개발 초기 당시 윈도우, OSX 각각 네이티브로 만들 리소스가 부족했기 때문에 웹 기술 기반으로 네이티브 앱을 만들 수 있는 다양한 솔루션들을 리서치했고 그 중 Electron을 선택하게 되었습니다.Electron은 제가 정말 좋아하는 제품인 Slack, Simplenote에서 사용하고 알려져 있고 국내에서는 Remember 등에서 사용하고 있습니다. 초기 개발 당시에는 안정성에 의문을 제기하는 개발자들도 많았고 저희도 여러 문제와 삽질(인증, 패키징, 이슈 레포팅의 어려움, 메모리릭 등등)을 많이 겪긴 했습니다만 개인적으로는 충분히 프로덕션에 쓸 수 있을 정도 수준이라고 생각합니다. 무엇보다 프론트엔드 개발자가 매우 적은 노력으로도 네이티브 데스크탑 앱을 만들 수 있는 장점이 다른 모든 문제점을 상쇄하고도 남습니다.언어개발 언어로는 자바스크립트 ES6를 사용합니다. 언어를 선택할 당시에도 여러 옵션이 있었는데 가능하면 실험적이지 않고 표준을 사용하는 것이 미래 유지보수에 안전하다고 판단했습니다. 또한 다른 자바스크립트 대안 언어를 사용하지 않더라도 ES6 (일부 ES7 포함) 스펙도 충분히 효율적인 개발이 가능하다고 생각했습니다.코딩 스타일은 기본적으로 Airbnb의 코딩 스타일 가이드라인을 따르며 조이의 상황과 맞지 않는 부분은 엔지니어들과 상의 후 수정해서 사용하고 있습니다. 스타일 체크는 ESLint로 자동화한 뒤 Circle CI와 붙여서 모든 풀리퀘스트에 대해 점검하고 있습니다.테스트초기 개발할 때는 테스트 코드를 별도로 붙이지 않았습니다. 고객의 요구와 기타 상황에 따라 기획과 설계가 크게 변경되기도 했고 그 때마다 기민하게 반응하기 위해서, 어느 정도 확립된 제품이 되기 이전에는 테스트 코드는 작성하지 않는 것이 좋다고 판단했습니다. 이제는 많은 부분이 확정되었고 안정성이 중요해지기 시작했으며 애플리케이션이 커지면서 자동화된 테스트는 필수가 되기 시작했기에 최근에 도입을 하고 있습니다.테스트를 위한 도구는 Jest, Enzyme 등을 사용합니다. Presentational 컴포넌트에 대한 테스트는 props에 따라 원하는 형태로 렌더링이 이루어지는지, 이벤트에 따라 콜백이 잘 실행되는지 등의 Spec 을 작성합니다. Container 컴포넌트에 대한 테스트는 각종 이벤트 및 동작을 시뮬레이션하고 그에 따라 Action이 잘 발생하는지 또는 내부 state가 잘 변경되는지를 테스트합니다. 또한 Store (또는 Reducer), Action Creator, Model, Util 등 모든 구성 요소에 대한 테스트를 붙이려고 노력하고 있습니다. 유닛 테스트가 아닌 e2e 테스트 혹은 css 스타일 테스트 등은 하지 않고 있습니다.빌드 및 배포현재 채널 데스크는 Client-side rendering을 합니다. 초기 로딩 속도가 느리다는 단점이 있어서 Server-side rendering으로의 전환도 고려하고 있습니다. 이미 Node.js 를 사용하고 있어서 Isomorphic Javascript의 형태로 어렵지 않게 전환이 가능합니다.작성된 자바스크립트는 Babel로 컴파일되고 Webpack으로 번들화됩니다. css를 포함한 각종 리소스들 역시 Webpack을 통해 처리됩니다. 웬만한 작업은 npm과 Webpack으로만 자동화하려고 했으며, Electron과 관련된 작업(패키징, 인증 등)들만 gulp를 이용해 자동화됩니다. 모든 리소스들은 Node.js + express 서버로 Serving 되고, Node.js 앱은 Docker로 빌드되어 AWS EC2로 배포됩니다.마무리이상으로 채널 데스크 프론트엔드의 기술 스택을 소개해드렸습니다. 앞으로 각 부분 별로 저희 팀이 고민해 온 문제들과 해결 방법을 공유하고자 합니다. 뛰어난 개발자 분들의 많은 관심과 피드백 부탁드립니다!#조이코퍼레이션 #개발자 #개발팀 #인사이트 #경험공유 #일지
조회수 838

혼자 살게 된다면

"제가 독립하고 집을 나온 지 이 제 한 달이 되었는데요. 막상 독립을 하니까 뭐가 필요한지 잘 모르겠어요. 자취 오래 하신 분들 필수품과 조언 좀 해주세요." - JMTGR 님의 사연"안녕하세요. 이제 막 취업에 성공한 신입사원입니다. 졸업 후 오랜 시간을 취준생으로 보내다가 이제야 겨우 직장에 들어가게 되었습니다! 그리고 난생처음으로 경제적으로 부모님께 독립하게 되었는데요. 회사와 집이 거리가 좀 있어서 혼자 집을 구하여 살게 되었습니다. 기대도 되지만 걱정되고.. 부모님 품에 벗어서 혼자 살면서 사회인으로서 잘 해나갈 수 있을지 너무 고민입니다. 조언 또는 팁을 받고 싶습니다!"- 이 XX 님의 사연 언제 우리는 완전히 '독립' 했다고 말할 수 있을까? 부모님과 또는 가족들과 떨어져 혼자 지내는 순간부터 독립이라고 불러야 할까? 아니면 온전한 경제적인 독립이 이루어진 후에야 우리는 완전히 독립한 사회인이라고 불려지는 걸까? 나를 포함한 주변 많은 친구들 그리고 지인들은 대부분 고향을 떠나 학업 또는 취업으로 인해 혼자 독립하여 살고 있다. 그들도 그리고 나도 처음부터 홀로서기가 쉬운 일은 아니었을 거라고 생각한다. 너무 까마득히 오래되어서 기억이 희미해졌지만.. 두 사연을 보고 과연 조금 더 빨리 '독립' 그리고 '사회인'이 된 사람으로서 어떤 조언 또는 경험을 나눠줄 수 있을까 다시 한번 생각해보게 되었다.1. 거주지 선정개인적으로 나는 어느 곳에 살던 늘 회사 또는 학교가 가까운 곳에 살았다. 그 이유는 ‘아침잠‘이 제일 소중했기 때문이다. 아침에 조금 더 잘 수 있다는 그 여유로움. 그 행복은 사실 하루에 큰 영향을 미친다. 그뿐만이 아니다. 퇴근 또는 하교 후에도 집이 가까우면 피곤한 하루가 조금 덜 피로해지는 경험을 하게 된다. 이런 이유로 나는 조금 월세가 더 비싸더라도 걸어 다닐 수 있는 또는 통근시간이 덜 힘든 곳으로 늘 거주지를 선정하곤 했다. 또 하나 좋았던 점은 ‘교통비‘가 들지 않는다는 것이었다. 물론 집세를 그만큼 더 내는 격이긴 했지만 개인적으로 난 학교 또는 직장과 가까운 곳에 거주지를 선정하는 것을 추천하고 싶다.2. 지출비용 최대한 아껴보기 feat. 본가 혼자 살면 생각보다 뭐가 이렇게 살 것도 필요한 것도 그리고 내야 할 공과금도 많은지.. 여러모로 돈이 깨지기 십상이다. 특히 절대 본가에선 돈 내고 사거나 쓰지 않았던 물품들이 가득이다. 예를 들면 ‘화장지’ 아주 대표적인 예다. 늘 집에 있던 그 두루마리 휴지가 글쎄.. 돈 내고 사려 보니 그렇게 아까울 수가 없다. 당연했던 것들이 새로이 보이는 순간이다.치약, 세제, 쿠킹포일 등등 여태 살면서 단 한 번도 내 돈으로 사보지 않았던 물품들이 필수품이 되어버리고 그렇게 자잘하게 쓰는 돈이 꽤나 많이 나간다. 그러면서 다시 한번 느끼게 된다.“아 이 모든 건 돈이었구나..”그리고 우리는 자취생의 필수 매장이라는 다XX에서 여러 가지를 사곤 하는데 사실 난 개인적으로 본가를 이용(?)한다. 아무리 자취를 하고 경제적으로 독립했다고 한들.. 여전히 우리는 마이너스로 살아가게 되니까..여기서 나의 팁은, 본가에 정기적으로 들러 내가 필요한 물품들을 가져온다. 물론, 집에 없을 수도 있지만 웬만한 것들은 신기하게 부모님이 여분을 가지고 계셔서 집을 탈탈 털어오곤 한다. 특히나 ‘화장지‘, ‘치약’ 이런 생필품 뿐만 아니라 ‘김치’ 등 반찬을 받아오면 적어도 1~2주는 생활비를 아낄 수 있다. (부모님 성향에 따라 이 부분은 실행 가능성이 높아질 수도, 낮아질 수도 있다)3. 혼자를 마음껏 즐기기처음 자취를 시작하거나 사회생활을 시작하여 수입이 생기면, 신이 난다. 부모님 품을 떠나, 가족을 떠나 혼자라는 설렘과 두려움 모든 것을 느끼게 된다. 그리고 보통 처음엔 거의 기쁜 마음이 큰 것 같다.“아~내가 이제 드디어 어른되었구나. 혼자 살다니!”이런 마음으로 이제 혼자 어떻게 살면 좋을지에 대한 고민도 해보고 친구들을 집에 초대하고 집에 늦게 귀가해도 괜찮다는 자유를 만끽할 수 있다. 하지만 오랜 자취러, 사회인이 되면 느끼게 되는 순간이 있다. 혼자 먹는 밥이 맛이 없고, 혼자가 싫은 외로운 날과 가족들과 고향이 유난히 그리운 날들이 찾아올 것이다. 생각이 업그레이드되는 날도 온다. 다시 가족과 함께 살고 싶단 생각 또는 다른 누군가와 함께 살고 싶단 생각, 다시 학생이 되어 사회인에서 벗어나고 싶단 생각 등..또한 너무 혼자 오래 살게 되면 혼자가 익숙해 더 이상 누군가와 함께 사는 게 영영 힘들고 불편해지는 일이 될 수도 있다는 점(?)이 단점이 아닐까.어쨌든, 처음 자취를 하고 독립을 하면서 사회가 규정한 ‘어른‘이란 타이틀은 맨 처음 즐길 수 있는, 그때만 느낄 수 있는 하나의 감정이라고 생각하기에 마음껏 즐기라고 말해주고 싶다.4. 결국 우린 '혼자' 개개인의 차가 있겠지만 나는 다른 친구들에 비해 조금 빨리 독립을 하게 되었다. 그래서 그런지 혼자라는 것에 대해 익숙하지만 누군가에게는 가족과 함께 사는 것이 당연한 일이고 항상 함께 해야 할 수도 있다. 하지만 가족이라는 울타리 안에서, 부모님의 보호 안에서도 ‘나’라는 개인이 존재한다. 힘이 들 때 가족 친구들에게 의지할 수 있기에 우리는 힘을 얻고 다시 살아가지만 결국 삶은 ‘혼자‘라는 것을 이해하고 혼자 자취하며 살아가는 지금의 시간이 앞으로의 홀로서기 연습, 앞으로를 살아갈 용기를 터득하는 시간이라고 생각했으면 좋겠다.5. 너무 혼자가 편해지지 않도록 노력하기4번에 분명히 ‘결국 우린 혼자‘라고 해놓았지만, 5번에서 말하고 싶은 요점은 ‘혼자’에 너무 익숙해져버리지 말자는 것이다. 처음과 끝은 혼자일지언정, 우리는 살아가면서 다른 사람들과 함께 살아가게 된다. 아니 그래야만 한다. 혼자 오래 살다 보니 느끼게 된 것은, 혼자가 너무 편해서 가끔 나만 생각하는 이기적인 면모를 발견하게 된다는 것이다. 그러다 보니 나에게 맞춰지지 않는 것은 배척하게 되었고 차라리 혼자가 편하다며 자취방 한 구석에 홀로 있는 나를 종종 발견하곤 했다. 누군가(가족, 친구)에게 의존하는 것도 문제이지만 그렇다고 너무 혼자가 익숙해지지 않도록 노력하는 것도 필요하지 않을까 싶다.안녕하세요. 스푼 라디오입니다.두 분의 사연을 받고, 사실 제가 어떤 말을 해드릴 수 있을까 고민을 많이 했습니다. 조언이라고 하기엔 거창할 것만 같아 저의 경험을 토대로 몇 자 적어보았습니다. 먼저 첫 사회인이 되시고 이제 막 홀로서기를 시작한 두 분께 자취생활에 도움이 될만한 스푼 굿즈 Made in Spoon '숟가락' 그리고 '머그컵'을 보내드리도록 하겠습니다.누구에게나 사연은 있다.당신의 사연, 고민을 함께 나누는 공간 스푼 라디오입니다.사연에 채택되신 스푼 유저 'JMTGR & 이 XX'님께 스푼 라디오 공식 굿즈를 선물로 보내드립니다.여러분의 이야기를 듣고 싶습니다. 스푼 라디오에 사연을 보내주세요.사연에 채택되신 분들께 소정의 선물을 보내드립니다.자세한 사항은 [email protected]으로 문의 바랍니다.
조회수 2059

[사내 인터뷰] 전산팀 김원석 부장 "60살에도 개발하는 핀테크 전문 아키텍처가 꿈"

Q. 자기소개를 해달라. 30CUT에서 무슨 일을 맡고 있나?전산팀을 리드하고 있다. 시스템 세팅, 운영 및 개발을 총괄한다. 자세하게는 서버 세팅, 데이터 설계, 보안 시스템 아키텍처 설계 구성 및 도입. 사내 업무를 위한 전반적인 ERP 구성, 홈페이지 개발 및 관리, NH농협은행 협업 프로그램 개발 등을 총괄하고 있다.Q. 30CUT에 합류하기 전에는 어떤 일을 했나?써티컷에 오기 바로 전에는 캐피털 기업에서 전산실 팀장으로 근무했다. 전체 커리어로 보자면 개발자로 십 년 넘게 일했다. 통계회사, 회계법인, 금융기업을 거쳤다. 주로 ERP 시스템을 구축하는 일을 해왔다.Q. 서준섭 대표님과 함께 30CUT을 창립한 멤버다. 어떻게 만나게 됐나?처음에는 지인 소개로 만났다. ‘사업을 해보자’고 만난 것도 아니고 그냥 가벼운 티타임이나 술자리에서 만나 금융에 대한 이야기를 나눴다. 대표님도 나도 금융업에 종사하고 있다 보니 공유할 생각들이 많았다. 그렇게 만난 시간이 두 달 정도였다. 어느 날 대표님이 ‘사표 쓰고 사업을 해보려 하는데 같이 할 생각 없냐’고 물어보시더라. 그동안 만나오면서 쌓였던 신뢰가 있었기 때문에 한치의 망설임도 없이 쓰겠다고 했다. 그렇게 함께 준비해서 작년 10월에 창립했다Q. 30CUT의 최대 장점이라고 생각하는 것은 무엇인가?다른 회사들을 보면 대부분 팀장 급은 금융기업 출신이 많다. 그에 비해 우리 회사는 회계법인, 삼성전자, 캐피털 등 출신 분야가 다양하다는 것이 강점이다. 매니징을 담당하는 팀장들이 각자 자신의 전문 분야에서 탁월한 능력을 갖고 있고 잘 할 수 있다는 확신과 열정도 뛰어나다. 팀원들에게도 좋은 영향을 끼치기 위해 노력하고 있다. Q. 전산 팀원들이 부장님을 굉장히 좋아한다. 정근님은 부장님을 보고 입사했다고 할 정도인데… 리더로서 팀의 만족도를 높일 수 있는 비결이 뭔가?나는 사원부터 주임, 대리, 차장까지 다 겪어보지 않았나. 윗사람도 모셔보고 아래 직원들도 함께 해보면서 신념이 하나 생겼다. 바로 ‘내가 들어서 기분 나빴던 말이나 행동은 하지 않겠다’라는 거다. 이 신념을 지키기 위해서 항상 노력한다. 나도 노력하지만 지금 팀원들이 알아서 너무나 잘 해주고 있어서 딱히 트러블이 없다. 우리 팀 같은 경우 경영 학도에서 개발자가 된 김프로(바로 이전 인터뷰의 주인공, 타이거!)나 근래 입사한 이프로나 열정이 대단하다. 스스로 공부하고 발전하는 친구들이라 1-2년 뒤가 더 기대된다. Q. 30CUT이 어떤 회사로 성장해 나가길 원하나? 내가 꿈꾸는 회사의 모습은?비즈니스적으로는 우선 P2P 대출업이기 때문에 투자자 보호가 제일 우선이다. 대출자들을 잘 선별하기 위해 기존의 신용평가 시스템과 더불어 우리만의 노하우를 축적해야 한다. 결과적으로 부도 확률이 낮은 안전한 대출 채권 포트폴리오를 구성하는 게 중요한 가치라고 생각한다. 조직문화적으로는 다른 금융기업에 비해 좀 더 젊은 느낌의 회사가 되기를 바란다. 금융기업들이 워낙 보수적인데, 우리는 핀테크 기업인만큼 탄력근무제를 도입한다든지 유연한 문화가 필요하다. Q. 핀테크 기업에서 개발의 비중은 막중하다. 30CUT이 성장하는 과정에서 전산팀이 어떤 역할을 해야 한다고 생각하나?30CUT은 핀테크 기업이다. 물론 ‘핀(금융)’도 중요하지만 핵심은 ‘테크’라고 생각한다. 기술이 탄탄하게 뒷받침을 해줘야 한다. 30CUT이 최소한의 핵심인력으로 신속한 업무처리가 가능할 수 있도록 자동화 및 첨단 IT 시스템을 만드는 것이 개발팀의 역할이다. 오퍼레이팅 비용을 줄이면서 회사 이익을 극대화할 수 있는 방향으로 전산팀을 이끌어 가고 있다.   Q. 올해 개인적인 목표는?첫 번째는 업무적인 건데, 론칭이 되고 대출이 나갔을 때 지금 구성되어 있는 시스템에서 오류가 나지 않게 하는 것이 가장 큰 목표다. 밸런스를 맞추는 것이 꽤 어려운 작업이라 심혈을 기울이고 있다. 두 번째는…음… 회사가 돈을 잘 버는 것?(웃음)Q. 10년 뒤 어떤 사람이 되고 싶은가?환갑에도 일을 하는 아키텍처가 되고 싶다(10년 뒤에 환갑은 아니지만....). 우리나라에서 손 꼽히는 핀테크 계의 전문 아키텍처로 성장하는 것이 목표다. 60살의 아키텍처… 멋지지 않나? :) #비욘드플랫폼서비스 #비욘드펀드 #팀원 #팀원소개 #팀원인터뷰 #인터뷰 #사내문화 #기업문화 #조직문화
조회수 1043

왜 네트워킹 모임에 가는가?

온오프믹스라던가, VC 또는 엑셀러레이터 사이트를 가면네트워킹 모임이 매주 진행된다.대학교 창업보육센터,각 지역의 창조경제혁신센터,중소기업진흥공단, 기술보증기금 등정부에서 지원하는 네트워킹들도 찾아보면 꽤 있다.기업은행, 산업은행, 국민은행 등의은행권에서도 스타트업을 위한 네트워킹 자리를가끔씩 준비해주곤 하지.심지어 코워킹 스페이스들도 주기적으로네트워킹 행사를 한다.(밋업이라던가 무슨무슨 데이~하면서 말이야)창업자들에게 네트워킹 모임에 참가하는 이유는 무엇이고, 어떤 기준을 가져야 할지이야기를 풀어본다.1. 네트워킹이 가져야 할 본질 1) 다양성네트워킹의 구성원의 풀이 다양해야 서로 상호 보완해 줄 수 있는 접점이 생긴다.마케팅/영업/법률/투자/회계/노무/생산 등의다양한 사람들과 만나면서 필요한 소스들을 얻어내고, 관계를 만들어가는 것이다.그렇기에 다양성이 기반이 되어야 한다.2) 연계성, 확장성다양한 분야의 사람들이 있다 하더라도서로 연결이 되지 않으면 그냥 왔다갔소가 돼버린다.네트워킹을 통해 자신을 어필하고,관심 있는 사람들과 후속 미팅을 가지거나,제휴할 건덕지들을 찾아서 서로의 니즈에서 교집합을 찾아야 한다.좋은 인맥/인프라 만들 수 있는 기회를스스로 발굴하기란 쉽지 않다.하지만, 네트워킹을 통해 그런 관계를형성해 갈 수 있는 기회를 늘려가는 것이 중요하다.네트워킹의 궁극적인 목적은 인맥/인프라를 확대하여사업에 도움이 되고자 하는 것인데....이렇게 말하니까 너무 추상적이고 뜬구름 잡는 듯하다.쉽게 말해서,초기에는 우리 회사의 부족한 부분을 채워줄 수 있는 사람들과의 인연 맺기다.후기에는 우리 회사의 현 단계보다 높은 수준으로 끌어 줄 수 있는 사람들과 인연 맺기다.잉???너무 필요에 의한 모임 같다고?그래! 너무나 필요에 의한 모임이야.필요에 의한 모임이어야만 하고~!2. 네트워킹의 목적1) 단점을 채우기 위한 목적예비창업자나 초기창업자들이 정보를 얻기 위해 네트워킹 모임에 부단하게 참석한다.도움되는 강연도 있고, 동종업계 창업자도 만나고,함께 연계할 사람들도 찾아 헤맨다.창업에 대하여 모르는 부분이 많다 보니,어떻게 해야 하고, 무엇을 준비할지 막막하고,무언가 조언을 받든, 해결책을 찾아 나서는 경우다.팀원을 구하기도 하고,멘토를 찾기도 한다.우리에게 부족한 것을 외부에서 얻기 좋은 기회이기도 하다.2) 한 단계 올라서기 위한 목적예비창업자나 초기창업자를 지나서어느 정도 레벨업을 할 시점의 스타트업들이라면,투자자를 만나기 위해,대기업 또는 상장사/비상장사 등제휴나 영업을 하기 위해찾아가는 경우가 많다.네트워킹은 사람을 통해우리 레벨을 끌어올리기 위한 목적이 크다.괜히 대기업 총수들이 조찬모임을 하는 게 아니다.정부의 유력한 기관장과 만나고,행사를 가지는 이유는 시간이 남아서가 아니라뚜렷한 목적이 있기 때문이다.(그것도 비싼 회비, 참가비를 내면서까지참가하는 이유는 그 이상의 기회 가치를 얻기 위함이다.)사업을 하다가 실패해서 재도전/재기를 하는 분들을 보면,어디서 그런 기회를 포착하는지 궁금했다.그런데,그분들은 이전에 사업할 때의 인맥/인프라를활용해서 자금이라던가 기회를 얻더라.결국 사람이 최고의 자산이라는 말이쉽게 이해되더라.사업 준비할 때,그리고 창업 초기에나 역시 웬만한 네트워킹 모임에는지속적으로 꾸준히 참석했다.그러다가 점차 네트워킹 모임을 선별하게 되더라.(가지치기~~!)단지, 명함 돌리려고,케이터링이나 음식이 좋아서,귀한 시간을 내는 것이 아니다.네트워킹 모임에 참석하는데 의미를 둔다는 생각이라면,그냥 그 시간에 회사에 일하는 게 더 이득이다.이번에는 일부 피해야 할 네트워킹 모임을좀 짚고 넘어가야겠다.3. 피해야 할 네트워킹 모임1) 발전이 없는 네트워킹네트워킹 모임에 계속 신규 멤버만 들어오고기존 멤버는 이탈하면서 유지되는 네트워킹 모임은별 의미가 없다.딱 그 수준에서 멈추어져있다 보니참석하는 사람들도 한두 번 나갔다가안 나오게 된다.네트워킹을 주최/운영하는 사람들이수요자들의 니즈를 파악 못 한 것이다.주로 보여주기 식으로 운영하는 경우에 해당하는데어차피 운영진들은 이 네트워킹을 통해 얻고자 하는 것은 자신들의 세를 과시하거나 성과로 잡으려고 하는 케이스다.간혹 선거철에 정치적인 의도를 가진 모임으로 변질되기도 한다.또는, 네트워킹 모임을 주최/운영한 경험이 없는운영진들이 설립한 모임을 경우가 많다.거기에 휘둘려서 아까운 시간을 허비하지 마시길~~~2) 1회성 네크워킹 1회성 네트워킹은 사적인 목적이 있더라.주로 강연하는 사람들이 개최해서강연비 명목 또는 참가비 명목으로소정의 비용을 받고,강연하고 나서 잠시 만남을 가지는 경우인데...냉정하게 생각해보면,그 자리에 모인 사람들은거의 나와 비슷한 지식 범위와겹치는 니즈를 가지고 있다.예를 들어 사업계획서 잘 쓰는 법을강연으로 해 놓고, 네트워킹이란 이름으로사람들을 모았다고 치자.다들 돈 내가면서 알고 싶은 것은어떻게 하면 사업계획서를 잘 쓸지에 대한 니즈다.다른 사람들과 협업을 하거나,다양한 정보 소스를 얻겠다는 니즈가 핵심이 아닌사람들이다.그건 네트워킹의 본질과 전혀 다른 모임이다.3) 친목질 우선 주의자기들끼리 만나서 교류하고,온라인 커뮤니티나 동호회처럼 친목질이 우선시된다.교류나 친목도모 좋다 이거야.그런데 사업하는 사람들이 주목적을 잊으면 아니되옵니다.웃고 즐기고, 서로 위로하고 좋은데...그러려고 만나는 것은 이왕이면 일과 이후나 주말 휴일이나 개인 간에 만나는 게 어떨까.이런 친목형 네트워킹을 개인적으로 의미 없다고 본다.서로 다 잘 알아서 새로울 것도 없고,끌어줄 사람 찾기는 더더욱 어렵다.(거의 비슷한 수준이 모이니까)친하면 서로 더 잘 이해하고 도와줄 수 있는 거 아니냐고?친해서, 더 잘 이해해서안 도와줄 가능성이 더 클 수도 있어!널 끌어줄 사람도 없고,정보력도 너랑 고만고만한 사람들과굳이 외부에서 만나야 할 이유가 뭔데?쉽게 학창 시절 동아리를 생각해봐!오랜 역사와 전통을 자랑하던 동아리가뭐가 새롭게 바뀌거나 크게 달라지는 거 있던가?별첨으로 다른 케이스를 하나 소개하자면,가고 싶지만 아직은 이른 수준의 네트워킹 모임이 있어."개인의 최고 도덕성은 이타적이지만집단의 최고 도덕성은 이기적이다." -라인홀트 니버-집단이 되면, 해당 구성원들의 이익 도모가 최우선이 된다.(사업을 하고 나서, 매우 공감!!!)어떤 네트워킹 모임은 폐쇄적이고, 가입 자체가 까다롭고이익집단화되는 경우를 보게 된다.(이게 나쁘다고는 생각 안 해)그러고 나서,어떤 이익을 얻기 위해 카르텔을 형성하기도 한다.네트워킹이라기보다는 협회라는 느낌이랄까?사실 이러한 모임에 진입장벽이 높아서멤버가 되기도 어렵겠지만,멤버가 되어서도 그 수준을 맞추기 쉽지 않다.왜냐면 이러한 네트워킹은 매우 확실한 이익이 보장되는 케이스가 많고그에 걸맞은 멤버십 자격을 유지하기란 쉽지 않다.사교모임/클럽/조찬모임/포럼 등 다양한 이름으로 불리고,멤버 요건이라던가, 참가비용 등 좀 부담스러울 거야.스타트업에게 이런 네트워킹은 뱁새가 황새 따라가다가 가랑이가 찢어진다는 속담처럼좀 이른 게 아닐까 한다.뭐 그런 세상도 있다고~~ 알아두면 좋지 않을까?일일이 다 찾아다니는 것을 권하고 싶지 않다.물론 나도 처음에는 뭣도 모르고 다 찾아다녔다.내가 필요해서 찾아가는 곳보다솔직히 날 부르는 네트워킹 자리를 빠지지 않았어.(정말 순진하고, 바보 같은 짓이었지)사람 일은 모르니까 언제 어떻게 도움이 될지 모르잖냐고?맞아.세상 일은 그렇게도 흘러가는데...그런 불분명한 확률에 기대어 시간과 열정을 쏟는 것보다갈 곳 안 갈 곳 구분해서 뚜렷한 목적 달성 확률을 높여효율성을 증가시키는 활동으로 선별하는 게 더 나아.명함 한 장도 다 돈이다!명함을 아끼라는 게 아니라,그냥 주고받고 잊어버릴 명함 날리기는찌라시 알바랑 다를 게 없어.막연한 확률에 기대지 말라고.명함 한 장이더라도 의미를 만들 수 있는 장소에서의미를 나눌 수 있는 사람들에게의미를 기대할 수 있는 시간에 뿌려야지.가능한 확률을 높이라고.추신:혹시나 해서 남기는데...개인 친목을 위한 모임이나동호회가 나쁘다는 게 아냐. 삶의 윤활유처럼 그런 모임들은 꼭 필요해!우리도 사람이라서 긴장을 풀 때도 있고,좋은 사람들과 시간을 나누기도 해야지.내 말은 네트워킹이라는 이름 하에서그러고 다니지 말라는 거야.그런 목적으로 네트워킹 찾아다니지 말라고.(너의 직원/동료/고객들은 그런 널 아니?)공과 사의 영역을 혼동하지 마.
조회수 771

시프티의 출퇴근기록 및 급여정산 Excel

비즈니스 운영에 있어 데이터를 수집하는 것은 매우 중요합니다. 데이터 수집의 적절한 방법을 도입할 수 있다면 비즈니스의 거의 모든 영역을 수량화할 수 있습니다. 이 데이터는 과거 및 현재 운영 상황을 분석하고 미래 아웃풋을 예측하는 데 사용될 수 있습니다.당신 비즈니스의 출퇴근기록 시스템에도 동일하게 적용됩니다. 파트 타임 교대 근로자 또는 정규직 직원을 고용하든, 또는 근무 시간의 자유를 지원하는 근무 환경에 있든 관계없이 분석을 위한 출퇴근기록 데이터를 수집하는 것은 중요합니다. 예를 들어, 레스토랑의 가장 바쁜 시간에 몇 명의 직원이 근무하고 있었는지에 대한 정보를 얻을 수 있으며 이를 그 시점에 발생된 매출 또는 고객 불만 사항과 비교할 수 있습니다. 당시 직원이 부족했다는 것을 알게 되었다면 다음 휴가철에, 인원 보강에 대한 결정을 내릴 수 있습니다.시프티의 출퇴근기록 시스템은 관리자가 계획한 근무일정와 연결되며 추후 분석 및 처리를 위해 Excel로 내보낼 수 있습니다. 이 추출된 엑셀에는 다음 항목이 표시됩니다.근태 (붉은 색)A) 출근시간 / 퇴근시간 및 휴식시작/종료 시간B) 자동으로 추가된 휴식 시간 [규칙 설정 가능]C) 총 시간 (퇴근시간 - 출근시간 - 모든 휴게시간)D) 시급E) 기본 급여 (C x D)급여 (푸른 색)F) 연장근로 시간/수당G) 야간근로 시간/수당H) 휴일근로 시간/수당I) 주휴 인정여부/수당J) 총 추가수당K) 총 급여 (E + J)시프티에서 다운로드 한 Excel을 보면 각 열에 앞서 언급한 모든 항목이 표시됩니다. 무엇이 시프티의 출퇴근기록 엑셀을 차별화할까요? 그것을 살펴 봅시다.필터Excel로 작업 할 때는 거의 항상 필터를 사용해야합니다. 급여정산을 처리하려면 특정 직원을 필터링하거나 각 근무지 별로 필터하여 총 근무시간과 임금을 분석해야합니다. 걱정하지 마세요. 시프티에서 다운받은 Excel에는 이미 필터가 설정되어 있으므로 Excel로 내보낼 때마다 필터를 설정할 필요가 없습니다.함수 및 공식 적용‘총 시간’과 ‘기본 임금’의 셀을 클릭하면 함수와 수식이 들어간 것을 볼 수 있습니다. 따라서 출근시간, 퇴근시간 또는 휴게시간을 변경하면 다른 관련 셀을 자동으로 업데이트하여 총 근무시간과 그에 따른 기본 급여를 계산해 줍니다.상단에 합계(소계) 표시출퇴근기록들 맨 위에는 굵은 글씨가 있는 행이 있습니다. 무엇인지 짐작이 가시나요? 아래의 모든 근무시간 또는 임금의 합계를 계산하는 Subtotal 함수가 적용되어 있습니다. 이 굵은 글씨의 행은 오직 엑셀 안에서 눈에 보이는 기록들의 합계를 내줍니다. 따라서 직원(들), 지점(들) 또는 직무(들)로 필터링하면, 필터된 기록들의 합계를 알 수 있습니다.아래 시프티에서 다운로드한 Excel의 클로즈업 스크린 샷에서 상단의 굵게 표시된 필터, 함수 및 합계 볼 수 있습니다.관리 관점에서 적절한 인적 자원을 올바른 역할로 적절한 위치에 할당해야하는데 유능한 직원이 지루한 Excel 작업에 얽매이고 있다면 그 방안을 모색해 보세요. 효율성 증대를 원한다면 시프티로 그들이 개개인의 전문 분야에서 자신만의 능력을 발휘할 수 있도록 시간을 절약해주세요.#시프티 #고객가치 #핵심가치 #기업소개 #서비스소개
조회수 756

HBase Meetup - 비트윈에서 HBase를 사용하는 방법

비트윈에서는 서비스 초기부터 HBase를 주요 데이터베이스로 사용하였으며 사용자 로그를 분석하는 데에도 HBase를 사용하고 있습니다. 지난 주 금요일(11월 15일)에 HBase를 만든 Michael Stack 씨가 한국을 방문하게 되어 ZDNet 송경석 팀장님의 주최 하에 HBase Meetup Seoul 모임을 가졌습니다. 그 자리에서 VCNC에서 비트윈을 운영하면서 HBase를 사용했던 경험들이나 HBase 트랜잭션 라이브러리인 Haeinsa에 대해 간단히 소개해 드리는 발표 기회를 가질 수 있었습니다. 이 글에서 발표한 내용에 대해 간단히 소개하고자 합니다.비트윈 서비스에 HBase를 사용하는 이유비트윈에서 가장 많이 사용되는 기능 중 하나가 채팅이며, 채팅은 상대적으로 복잡한 데이터 구조나 연산이 필요하지 않기 때문에 HBase 의 단순한 schema 구조가 큰 문제가 되지 않습니다. 특히 쓰기 연산이 다른 기능보다 많이 일어나기 때문에 높은 쓰기 연산 성능이 필요합니다. 그래서 메세징이 중심이 되는 서비스는 높은 확장성(Scalability)과 쓰기 성능을 가진 HBase가 유리하며 비슷한 이유로 라인이나 페이스북 메신저에서도 HBase를 사용하는 것이라고 짐작할 수 있습니다.로그 분석에도 HBase를 사용합니다비트윈은 사용자 로그 분석을 통해서 좀 더 나은 비트윈이 되기 위해서 노력하고 있습니다. 비트윈 사용자가 남기는 로그의 양이 하루에 3억건이 넘기 때문에 RDBMS에 저장하여 쿼리로 분석하기는 힘듭니다. 그래서 로그 분석을 위해 분산 데이터 처리 프레임워크인 Hadoop MapReduce를 이용하며 로그들은 MapReduce와 호환성이 좋은 HBase에 저장하고 있습니다. 또한 이렇게 MapReduce 작업들을 통해 정제된 분석 결과를 MySQL에 저장한 후에 다양한 쿼리와 시각화 도구들로 custom dashboard를 만들어 운영하고 있습니다. 이를 바탕으로 저희 Biz development팀(사업개발팀)이나 Data-driven팀(데이터 분석팀)이 손쉽게 insight를 얻어낼 수 있도록 돕고 있습니다.HBase를 사용하면서 삽질 했던 경험HBase를 사용하면서 처음에는 잘못 사용하고 있었던 점이 많았고 차근차근 고쳐나갔습니다. Region Split과 Major Compaction을 수동으로 직접 하는 등 다양한 최적화를 통해 처음보다 훨씬 잘 쓰고 있습니다. HBase 설정 최적화에 대한 이야기는 이전에 올렸던 블로그 글에서도 간단히 소개한 적이 있으니 확인해보시기 바랍니다.HBase 트랜잭션 라이브러리 해인사Haeinsa는 HBase에서 Multi-Row 트랜잭션을 제공하기 위한 라이브러리입니다. 오픈소스로 공개되어 있으며 Deview에서도 발표를 했었습니다. HBase에 아무런 변형도 가하지 않았기 때문에 기존에 사용하던 HBase 클러스터에 쉽게 적용할 수 있습니다. 비트윈에 실제로 적용되어 하루 3억 건 이상의 트랜잭션을 처리하고 있으며 다른 많은 NoSQL 기반 트랜잭션 라이브러리보다 높은 확장성과 좋은 성능을 가지고 있습니다.저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 [email protected]로 이메일을 주시기 바랍니다!
조회수 2015

StyleShare 서비스의 구조

안녕하세요. 스타일쉐어에서 서버사이드 개발을 하고있는 김현준입니다. 스타일쉐어의 엔지니어링 블로그의 첫 글에서는 저희 서비스의 스택을 소개하도록 하겠습니다. 사실은 Instagram의 스택과 유사한 면이 많아 글 또한 많이 유사할 것 같네요.서버먼저 스타일쉐어는 서버의 운영 체제로 Ubuntu 12.04 (Precise Pengolin)를 사용합니다. 모든 서버는 아마존 웹 서비스(Amazon Web Services)의 Elastic Compute Cloud(EC2) 위에서 돌아가고 있습니다. 스타일쉐어는 EC2 이외에도 Simple Storage Service(S3)와 같은 AWS의 다양한 서비스를 사용하고 있는데요, AWS를 사용하는 가장 큰 이유는 유연한 확장성(Scalability)이라 말할 수 있을 것 같습니다. EC2의 서버는 모두 가상 머신이기 때문에 관리 콘솔에서의 쉬운 조작으로 서버를 끄고 켤 수 있을 뿐만 아니라, 장애가 생겼을 때도 간편하게 장애가 생긴 서버를 내리고, 새로운 서버로 대체할 수 있는 이점이 있습니다. 이 모든 기능은 API로도 제공되고 있기 때문에, 자동화도 가능합니다. 실제로 스타일쉐어에서도 웹 요청을 처리하는 웹 서버들과 작업을 처리하는 워커들에 대해서 오토-스케일러를 구현해 사용하고 있습니다.로드 밸런싱스타일쉐어의 웹 서버들은 AWS의 Elastic Load Balancing(ELB)에 등록되어 있어서 ELB가 수많은 요청들을 여러 서버들에게 차례로 나누어 보냅니다. 보내어진 요청들은 각각의 서버에서 nginx를 거치며 또 한번 여러 개의 프로세스로 분배되어 처리됩니다.웹 어플리케이션스타일쉐어의 웹 어플리케이션은 Werkzeug 기반의 웹 프레임워크 Flask와 ORM 프레임워크인 SQLAlchemy 위에서 Python으로 구현되어 있습니다.데이터스타일쉐어의 대부분의 데이터는 PostgreSQL에 저장되고 있습니다. 여러 대의 PostgreSQL 인스턴스의 풀링(Pooling)을 하기 위해서 pgpool을 사용합니다. 서비스의 성능 향상을 위한 캐싱 도구로는 Memcached를 사용합니다.스타일쉐어에 올라오는 사진들을 비롯한 대부분의 이미지들은 Key 기반의 스토리지인 AWS S3에 저장하고, 관리합니다. S3의 가장 큰 장점은 사용자가 용량 제한과 파티셔닝에 대해 신경쓰지 않아도 된다는 점일 것입니다. 앞으로도 무한히 많은 사진이 올라올 서비스를 만드는 저희로서는 아주 유용하답니다. 이미지 뿐만 아니라, 서비스를 배포할 때마다 만드는 패키지와 매일매일 데이터베이스 백업 모두 S3에 저장되어 있습니다.작업 관리대부분의 서비스와 마찬가지로, 스타일쉐어도 웹 어플리케이션 서버와 별개로 무거운 작업(Task)을 처리하기 위한 워커(Worker) 서버를 따로 구동하고 있습니다. 여기서 작업이란 계속해서 쏟아지는 웹 요청을 처리하기도 벅찬 웹 어플리케이션에서 처리하기에는 비교적 오래걸리는, 예를 들면 알림(푸시)과 메일을 보내거나, 이미지 프로세싱과 같은 일들을 이야기합니다. 이러한 작업들을 비동기적으로 처리하기 위해 저희는 Celery와 RabbitMQ를 사용합니다. Celery는 Python으로 구현된 비동기 작업 워커이고, RabbitMQ는 워커로 넘길 작업을 관리하는 AMQP 프로토콜 기반의 브로커(Broker) 큐입니다.오픈 소스?스타일쉐어 서버는 비동기 네트웍(asynchronous I/O)을 구현하기 위해서 gevent를 사용합니다. 그 외에 배포(deploy)를 위한 Fabric과 boto나, 내부 문서화를 위해 사용하는 Sphinx 등이 스타일쉐어에서 주로 사용하는 라이브러리/프로젝트 입니다.오픈 소스.위에 적은 것처럼, 스타일쉐어의 구현의 많은 부분이 오픈 소스 프로젝트에 크게 의존하고 있습니다. 훌륭하고 건강한 오픈 소스 생태계 덕분에 우리는 스타일쉐어를 훨씬 더 수월하게 만들고 지탱할 수 있었습니다. 그래서 저희도 도움을 받은 만큼 기여하고, 구성원으로서 더 나은 생태계를 만드려 합니다. 그 중 하나가 바로 이 스타일쉐어 엔지니어링 블로깅 활동이고, 다른 하나가 저희 팀의 오픈 소스 프로젝트 활동입니다. 스타일쉐어 팀의 오픈 소스 활동들은 StyleShare’s GitHub에서 살펴보실 수 있답니다. 여러분들의 관심어린 피드백과 기여도 언제나 감사히 환영합니다.그 외의 도구들스타일쉐어 실 서비스에서 발생하는 오류와 버그를 추적하기 위해 사용하는 Exceptional도 매우 유용합니다. Flask 프레임워크에서 Exceptional 서비스를 쉽게 이용할 수 있도록 도와주는 Flask 확장 모듈인 Flask-Exceptional이 공개되어 있습니다.함께해요저희와 비슷한 환경에서 개발하시는, 같은 도구를 사용하시는, 저희에게 도움을 주고 싶으시거나, 저희에게 (저희가 도와드릴 수 있다면) 도움을 받고 싶으신, 또는 그저 많은 이야기를 나누고 싶은 분들까지 많은 분들과의 소통과 교류가 많았으면 좋겠습니다. IRC를 하시는 분들은 오징어 네트워크(irc.ozinger.org)의 #styleshare-tech 채널로 놀러오세요.#스타일쉐어 #개발 #서버개발 #서버환경 #업무환경 #개발자 #인사이트
조회수 903

회사 속 5성급 캐릭터가 되어보자.

보통 게임 속 캐릭은 강화를 해야해요. 현실에선 강화가 안되죠. 사람 둘을 합쳐서 하나로 만들거나 사람에 가루를 뿌려서 연성할 수는 없는 노릇이니까요. 보통 현실에서의 강화는 경험치로 획득하게 됩니다. 회사의 난이도는 주로 랜덤인데, 난이도에 따라 NPC(사수, 팀장, 동료, 진상, 클라이언트, 협력업체, 이사, 투자자 등등) 의 미션의 퀄리티가 크게 달라집니다. 게임에선 보통 미션을 성취하면 보상을 받습니다. 하지만 현실에선 30일 출석보상과 약간은 뿌듯함 등이 주어지죠. 다소 아쉬운 보상이라고 할 수 있겠습니다. 물론 운영진이 특별이벤트로 종종 고기를 선물해주는데 이상하게 체력이 더 깎이는 느낌이 들기도 합니다. 과도한 고기섭취는 건강에 매우 이롭지만 아마 일얘기를 하거나 노잼분위기, 싫은 술마시기 등등이 동반되면 그런 역효과가 등장하는 것 같습니다. 이렇게 열심히 경험치를 쌓아서 성장하는 것이 우리네 삶입니다. 하지만 이게 디폴트값이란 게 있는 것 같기도 해요. 개인성향에 따라서 말이예요. 법사가 체력스탯을 겁나 올려봐야 기사보다 약한 것처럼 성향에도 속성이란게 존재합니다.보통 1. 물 속성을 지닌 존재는 스르륵스르륵 잘 빠져나가고 유연하고 순발력에 특화되어 있습니다.2. 불 속성을 지닌 존재는 열정터지고 실행력이 우르릉하죠. 뭐 말만 나오면 어느새 사라져서 이미 하고있는..3. 바람 속성의 존재는 존재감이 그리 크지 않아요. 조용하지만 영향력은 큽니다. 4. 치유 속성의 존재는 아침마다 커피를 사오거나 간식을 조달합니다.5. 영혼 속성의 존재는 상대의 마음을 읽을 수 있습니다. 리더쉽에 특화되어 있죠.등등..다양한 속성에 따라 장단점이 존재하기 마련입니다. 하지만 이런 속성과 무관하게 회사에 단비같은 존재들이 하나씩 존재하기도 합니다. 바로 5성급 레어캐릭이죠. 정말정말..드문 능력을 지니고 있는 존재입니다. 요즘 겁나 열심히 하고있는 탭소닉TOP. 5성!!!!!! ㄴ느아아으아느나ㅡ아아아ㅏ가만보니 이런 5성캐릭은 흔히 5가지의 특수능력을 지니고 있더라구요. 사실 특수하다고는 했지만 그 어느것보다도 평범하고 기본적인 영역이기도 합니다. 다만 그것을 굉장히 잘하는 거죠. 오늘은 그러한 5가지의 능력을 좀 알아보려고 합니다. 1. 마침 딱 그 시점에 정확히 가져오는데...궁예세요?대표님 : 이번에 그 견적 조사했니?쪼꼬미 : 아 네대표님 : 가져와봐쪼꼬미 : (가져왔다.)대표님 : 여긴 설치비 포함이야?쪼꼬미 : 아, 그건 안물어봤는데....대표님 : (좀 빡침) 그럼..여긴 이쪽은 왜 업장이 없어?쪼꼬미 : 아..여긴 그 사업자가 아니고 프리랜서시라고..그냥 현금영수증으로 처리해달라고..대표님 : (.........) 이번 행사 지방행사란거 얘기했지? 이거 전날 설치 가능한거야?쪼꼬미 : 아..다시 물어봐야해요.분노가..부들부들...이게 그냥 예시를 들려고 억지로 만든 상황이면 오죽 좋겠습니까만 애석하게도 그렇지 않습니다. 오히려 현실에서 벌어지는 일을 매우 순화시켜 일부분만 발췌한 것에 가깝죠. 보통 저런 대화는 30분 정도 계속되며 취조실 내지는 심심이 질문봇같은 느낌을 자아냅니다. 일을 잘하고 못하고는 사실 명쾌하게 하나의 명제로 정리될 수 있어요.'상대방의 일을 줄여주느냐 늘려놓느냐.'일을 해오라고 했으면 뭔가 야물딱지게 정리해서 가지고 와야 하는 것입니다. 여기서 5성 캐릭은 사뭇 다른 역량을 보여줍니다. 이 사람들은 보통 대표님이 뭘 물어보는 지 이미 알고 있습니다. 무슨 머신러닝 마냥 평소에 자주하던 단어와 행동들을 기억하고 있죠. 우리 대표님은 항상 뒷장의 예산안부터 먼저 보신다는 것을 알고있습니다. - 그래서 5성캐릭은 업체별 견적을 1장짜리 표로 정리합니다.- 항목에 예산을 맨 앞에 둡니다. 그리고 업체별연락처, 사업자번호, 대표이름, 컨택포인트, 제공내용, 진행가능여부, 특이사항, 커뮤니케이션 히스토리. 를 순서대로 나열합니다.- 그리고 결재판에 꽂아서 가져다드립니다.- 이 때 가져가는 타이밍은 왠지 대표님이 딱 지금쯤 가져와봐~~라고 할 타이밍 바로 1분 전입니다.마지막 항목이 되게 중요해요. 보통 이걸 '아다리' 라는 고급용어로 표현하는데, 정말 한 끗 차이입니다. 마침 방에 들어가서 공부하려고 하는데 엄마가 '너 공부언제할거야!' 라고 물어보면 우린 신경질이 나죠. '지금!!' 이라고 날카롭게 대답할 겁니다. 그럼 엄마는 '저저저 봐봐. 내가 얘기해야 그제서야 한다고 하지!' 라고 혀를 찹니다. 우린 빡칩니다. 억울하거든요. 담부턴 방에 들어가기전에 '공부하러 가는 중' 이라고 전광판이라도 켜고 들어가야 할 것 같습니다. 이게 사실 업무도 비슷합니다.한참 바빠죽겠는데 가져가면 어어어 두고가 두고가. 나중에 볼께. 가 되버리거든요. 그리고 대표님들은 주로 나중에 잘 못봅니다. 잊어버리거나 귀찮거나 너무 피곤하거든. 5성캐릭들은 상대방의 관심이 딱..온다..싶은 바로 그 시점을 낚아채는 보너스 능력을 지니고 있는거죠. 물론 각잡힌 정리능력과 더불어 말이예요.2. 전화로 잘 싸우더라고.1~3성캐릭이 가장 취약한 미션이 전화미션입니다. 사실 일반적인 커뮤니케이션은 누구나 할 수 있어요. 4성캐릭은 네고와 조율까지도 가능합니다. 하지만 5성만이 지니고 있는 능력이 있죠. 바로 '싸움' 이예요.일하면서 은근히 전화로 싸울 일이 많아요. 협력업체가 뭐가 늦는다거나, 사전에 말했던 내용과 다르거나, 부당한 컴플레인을 걸었거나 등등... 다양한 상황들이 있죠. 5성캐릭은 이걸 아주 유도리있게 잘하더라구요. 예를 들면 아래와 같은 놀라운 액티브스킬을 발휘해요.- 15분뒤에 다시 걸기 = 사람이 시간 지나면 지금처럼 흥분하지 않습니다. - 사원인데 팀장이라고 하기 = 직급있는 사람이라고 생각되면 해결해주길 희망하며 태세전환을 할 가능성이 높아져요.- 차근차근 정리해서 공감해주기 = 화를 내는건 일단 공감받으려고 안간힘 쓰는거거든요.- 사과능력이 뛰어남 = 못난 아버지를 둔 따레게 미안하달가가각!!!!! 이런 사과말고.. 잘못한 점을 콕콕 찝어서 진정성있게 잘 사과합니다. 그리고 해결에 초점을 두는 타입이랄까요.- 욕을 할 땐 음소거확인 = 사람이 또 사람인지라 감정조절까지 완벽할 수 없습니다. 이발저발 심한말거친말을 할수도 있죠. 그럴 땐 뮤트를 잘 눌러주고 실컷 욕을 한 후 빠르게 호흡정리를 합니다. 콜센터에서 자주쓰는 방식이거든요. 다만 뮤트가 잘되었는지 반드시 확인해야합니다.등등..이 사람의 출신이 궁금해질 정도로 전화가 유창하신 분들이 있어요. 3. 메일에 수미쌍관의 예술성을 더하다.3줄 내로 메일을 잘써요. 구구절절 아이고 그간 강녕하셨나이까..오뉴월 날씨가 몹시도 습하고 더워 업무하시기에 어쩌고저쩌고..하는 식의 줄글로 풀지 않아요. 기분나쁘진 않고 되게 업무적인 그 선을 잘 지킵니다. 이 분들이 사랑하는 것은 넘버링인데 특히 1,2,3으로 정리해주는 불멸의 3법칙을 잘 활용하십니다.안녕하세요.요청하신 강의자료 하기 첨부합니다.첨부문서는 총3종으로 ‘강의안/관련영상/프로필사진’ 입니다.확인 하신 후 해당 프로그램 계약 일자를 알려주시면 감사하겠습니다.1. 방문계약일 경우 복수일정(2개 이상)을 알려주세요2. 전자계약일 경우 담당자 이메일과 사업자등록증 첨부하여 회신주세요.3. 계약취소일 경우 반드시 유선연락 부탁드립니다.감사합니다.안녕하세요와 감사합니다의 5음절 수미쌍관법이 돋보이는 아름다운 한 편의 시조와도 같네요. 조상님들도 인정한 불멸의 3법칙4. 손이 빨라여기서 손빠름은 사실 타고나는 요소가 많은 것 같습니다. 물론 엄마뱃속에서부터 업무능력을 기르는 것은 아니니 여기서의 '타고남'은 유년시절의 교육을 의미해요. 손이 빠른 건 두 가지 의미가 있답니다.빠른 손!!(아닌가 발인가...)학습력이 겁나 좋아서 대략 훑으면 요지가 보이는 타입말그대로 손이 빨라서 요청하면 결과물이 빨리 나오는 타입사실 둘 다 완벽할 필욘 없습니다. 하나만 잘해도 대박이거든요. 첫 번째 능력은 주로 기획과 전략단에서 많이 필요할 듯하고, 두 번째 능력은 실행,운영,디자인,개발 등등에서 많이 유용하겠죠. 여기서 중요한 건 포인트인데.. 빠르게 훑어서 엉뚱한 요지를 찾을거라면 차라리 정독해서 느리게 파악하는 게 더 나을 듯 합니다. 또 손이 빠르긴 한데 실수가 겁내 많아서 제작업체에 넘기고 난 후에 막 사고터지고..이런 경우라면 그냥 억겁의 세월을 투자해서 천천히 꼼꼼히 잘 만드는 게 서로를 위해 좋죠.총체국난국...빠르고 실수하는 건 누구나 잘합니다. 저도 잘해요. 빠르다는 건 불필요한 작업들을 잘 쳐낸다는 걸 의미해요. 널려진 업무들을 하나로 통합하고, 툴을 잘 활용하고, 비효율적인 경로를 줄이고, 순발력이 있는거죠. 밥도 안먹고 화장실도 안가고 2시간만에 만드는 게 빠른 건 아닙니다.5. 내 머릿속의 계산기가 고성능임.커뮤니케이션 능력 막..이런게 대세이긴 하지만, 좀 다른 얘길 하고싶었어요. 일잘러5성캐릭은 예산을 볼 줄 압니다. 행사준비를 예산안을 보고 짤 수 있는 사람이죠. 어디에 무엇이 얼마 들어갔고, 어떻게 절감시킬 수 있는 지 아는 존재입니다. 돈을 지배하는 자죠. 디자인이라면 업체조율과 비교견적을 통해 예산절감마케터라면 운영비용 관항목 제대로 구성해서 세입세출 계획 잡을 수 있는 능력..기획자라면 당연한거고..개발은 시간과 노동이 곧 비용이니 시간/노동력 절감을 위한 솔루션..등등회의를 하건 업무를 하건..숫자를 인식하고 있는 거예요. 아이디어가 흘러넘쳐 우리의 예산도 막 줄줄 새고 있으면 안되는 거거든요. 사실 위 5가지 능력을 다 갖춘 사람을 찾을 수 없습니다. 없을 것 같아요. 사람이란 게 저렇게 태어날 순 없는 거예요. 혹시라도 주변에 있다면 전생에 핵전쟁을 막았다던가 아니면 신인류의 기원같은 존재가 분명합니다.저런 능력을 갖춰라!! 라는 말이 아닙니다. (저게 갖추고싶다고 해서 갖춰지는 것도 아니고.) 오히려 이미 갖추고 있는 분들이 그게 능력인지 모르는 경우가 많아서 더 안타까울 따름이죠. 부디 5성의 능력을 지니신 분들은 어서 각성하셔서 지구와 우주에 대평화를 가져와주셨으면 좋겠어요. 난 오성이었어!!!!

기업문화 엿볼 때, 더팀스

로그인

/