스토리 홈

인터뷰

피드

뉴스

조회수 1909

떴다 패션퀸! 팀그레이프 레드오핀 ‘김정아 MD’

안녕하세요, 매력만점 옐로 구성원들을 소개하는 사내기자 Y의 옐플 인터뷰, 그 15번째 이야기로 돌아왔습니다:) 2017년 헬로옐로의 포문을 열 새해의 첫 번째 주인공은 누구일까요? 바로 옐로모바일의 패션 이커머스 기업 팀그레이프 소속 ‘레드오핀’과 ’29.5’의 패션MD, 김정아 매니저입니다:) 사업기획을 위해 일일 피팅모델로 나선 사연부터 다가올 2017년 S/S 패션 아이템 추천까지! 여신포스의 커리어우먼! 멋진 그녀의 이야기를 지금 만나보세요.Y: 안녕하세요:) 옐블 독자들을 위해 간략한 자기소개 부탁 드립니다. 안녕하세요 여러분! 팀그레이프 신규사업부에서 패션 MD를 담당하고 있는 김정아입니다. :) 현재 소호몰 ‘레드오핀’과 ’29.5’ (전 ‘엘레뉴’)를 담당하고 있어요.Y: 패션MD라! 정확히 어떤 직무인지 궁금합니다. 회사에 따라 MD 직무가 조금씩 다른데요, 소호몰 패션MD같은 경우에는 상품기획부터 셀렉, 유통, 마케팅, 촬영 디렉팅까지 시각적인 부분을 거의 담당한다고 보시면 됩니다. 쉽게 말해 의류상품을 가져온 후 기획과 마케팅을 통해 판매까지… 거의 전과정에 투입되는 거죠.Y: 와… 굉장히 많은 일들을 하고 계시네요. MD직무를 선택하게 된 계기가 있나요?대학교에서는 섬유패션디자인과 금속공예를, 대학원에서는 텍스타일 디자인을 공부했어요. 졸업 후에 잠깐 인턴으로 텍스타일 디자인 작업을 했는데, 정말 서로 아무 말도 하지 않고 디자인만 열심히 하는 거예요. 직업까지 이렇게 소통이 없는 직무를 택하면 너무 무료하지 않을까 싶기도 하고, 저의 활동적인 캐릭터와 맞게 디자인도 하면서 이야기를 많이 할 수 있는 직업을 찾다 보니 MD를 선택하게 되었습니다.Y: 그럼 팀그레이프와는 어떻게 인연이 닿게 되었나요? 졸업후에 MD 직무를 즐겁게 할 수 있는 곳을 찾다가 팀그레이프에서 낸 채용공고를 보게 됐어요. 첫 출발을 함께한 회사와 브랜드를 키워보고 싶다는 생각이 강했던 것 같아요. 처음에는 브랜드 런칭 MD로 입사해서 ‘29.5’를 런칭했는데요, 뭔가 제 손으로 새로운 브랜드를 만들어 냈다는 것이 참 뿌듯합니다:) 그리고 지금은 최근 인수한 ‘레드오핀’을 집중적으로 담당하고 있고요.  Y: ’29.5’와 ‘레드오핀’은 어떤 점이 다른가요? 간략히 설명 부탁드려요29.5는 오피스룩 중심의 소호몰로, 20~30대 여성고객이 주요 타겟층입니다. 레드오핀은 트레이닝 복이나 루즈핏의 활동적인 이지웨어가 중심이고, 40대 여성고객이 주요 타겟층입니다. 특히 레드오핀은 팀그레이프가 최근 인수해서 신생 브랜드인가 하실 수 있겠지만, 사실 10년 정도의 역사를 지닌 소호몰이라서 보유 고객, 특히 단골이 많은 편이죠. Y: 패션MD를 모셨는데 여쭤보지 않을 수 없네요! 옐플들을 위해 코디 추천 부탁 드립니다ㅎㅎ얼마전부터 퍼스널 컬러 자가진단이 유행하고 있어요. 다양한 방법으로 쿨톤인지 웜톤인지 파악하고, 스스로에게 어울리는 색상의 의상이나 메이크업을 픽하는 걸 퍼스널컬러 자가진단이라고 해요. 스스로 어울리는 것을 택하는 게 남이 추천해주는 것 보다 훨씬 나을 거라 생각해요ㅎㅎ! 추가적으로, 올 봄 트렌드는 살랑거리는 쉬폰 소재나 언발란스 스커트가 될 거라고 하니 참고하세요. 팀그레이프의 소호몰들에서 추천하는 여러 패션 아이템들을 잘 살펴보시면 올 봄 멋진 패션리더로 거듭나실 수 있을 겁니다:)Y: 혹시 특별한 취미가 있는지 궁금합니다! 팝아트 초상화를 그리는 게 취미입니다ㅎㅎ 제 자신도 그려봤고, 최근에는 친구네 아가 돌 선물로 만들어서 선물한 적 있어요. 또 가끔 취미삼아 넥타이도 만들고 있고요. Y: 헐 넥타이를 만드신다고요?네ㅎㅎ 제가 착용할 일은 없지만, 넥타이를 정말 좋아해요. 제가 좋아하는 패턴으로 다양한 색상의 넥타이를 만들고 있어요.Y: 금손이 그저 부럽습니다(ㅠㅠ) 일하면서 가장 보람을 느끼는 순간은 언제인가요?사이트에 코디를 해서 올려놓는데, 이따금 제가 코디한 세트를 그대로 구매하는 고객들이 있어요. 그럴때마다 ‘내가 매칭한 아이템들이 고객들의 주목을 끄는 코디구나’라는 생각에 자부심이 생깁니다:) 사실 MD로서 가장 보람찬 순간은 내가 가져온 상품이 많이 팔리는 순간일 것 같아요. 지금은 오픈한지 얼마 되지 않아 그런 보람을 느끼기엔 이르지만, 조만간 꼭 그런 순간이 올 수 있도록 노력하고 있어요! Y: 입사 이후 기억나는 에피소드는 무엇인가요?엘레뉴에서 29.5로 리뉴얼을 하기 위해 사업계획서를 작성한 적 있어요. 다른 부분은 글로 쓸 수 있지만 촬영에 대한 부분은 글로 표현하기 어렵더라고요. 어떤 앵글로, 어떤 장소에서, 어떤 느낌으로 촬영할 건지 샘플도 필요했고요. 그래서 제가 일일 피팅모델이 되었습니다ㅎㅎ 가로수길 한복판에서 찍었는데 너무너무 민망했어요^^;;;Y: 와 실제 피팅모델이라 해도 믿을 것 같아요! 전문모델이 아니라서 좀 부끄럽기도 했는데, 직접 의상을 코디해서 착용하고 기획해보니 재밌고 유익한 경험이 되었어요:)Y: 팀그레이프와 함께 하면서 좋은 점이 있나요?‘GWP(Good Work Place)’라고 친목을 다지기 위해 한 달에 한 번 단체활동을 하는 팀그레이프만의문화가 있어요. 오후에 볼링을 치거나 날이 좋을 때는 한강에서 치맥을 즐기기도 하고요. 다른 소소한 이벤트로는 임직원 생일파티가 있는데요, 생일마다 케이크와 떡볶이를 먹는 독특한(?) 문화입니다. Y: 음…. 뭔가 잘나가다가 케이크랑 떡볶이라니… 에이 단 거 먹으면 매운 거 먹고 싶고, 매운 거 먹으면 단 거 먹고 싶은 게 인생의 진리 아니겠습니까? 팀그레이프만의 특별한 생일 전통이라고 생각해 주시면 좋을 것 같아요. Y: 앞으로는 어떤 일을 해보고 싶으세요?입사 후에 OEM업체와 협력해서 원피스를 디자인하고 제작해본 적이 있어요. 제가 만들고 싶은 디자인으로 직접 만들어 보니 정말 재미있더라고요. 앞으로도 레드오핀에서 상품을 직접 디자인해보고 싶습니다.  Y: 벌써 2017년입니다! 새해 이루고 싶은 목표가 무엇인가요? 레드오핀의 매출을 팍팍! 올리는게 첫 번째 목표입니다:) 두 번째는 소호몰 MD로서 더욱 인정 받는 거에요. 사실 레드오핀을 처음 담당했을 때 주 타겟층과 제가 나이차이가 있기 때문에 고객의 취향을 잘 파악할 수 있을지 주위에서 조금 염려했었거든요. 열심히 잘 해서 걱정하셨던 분들에게 인정받고 싶어요. 앞으로도 잘 성장해 가겠습니다. 레드오핀과 29.5에 많은 응원 부탁드려요! 새해 모두 파이팅하세요! :)
조회수 1057

디자이너는 디자인만 하지 않는다.

그래, 로고를 다시 디자인하였다. 그 다음은? 앞서 이야기한 대로 핀다의 새 얼굴을 만들었다. 이제 핀다의 '몸'을 다시 디자인할 차례이다. 경우에 따라 바뀐 로고를 기존 사이트에 그대로 사용하는 경우도 있지만, 이는 바뀐 정도가 아주 미비한 경우에나 가능한 이야기이다. 이런 경우라면 모를까... (출처: 구글) 핀다의 새로운 로고는 기존 로고의 기하학적 요소를 활용하였지만, 외형적인 차이가 크고 로고가 전달하는 이미지도 많은 차이가 난다. 이 경우 기존의 사이트를 활용하는 것은 불가능에 가깝다. 새 로고와 예전사이트를 조합해보았다 - 이상하다껍데기만 바꿀 것인가, 알맹이도 바꿀 것인가?사이트를 개편하는 프로젝트는 새로운 집을 짓는 것이 아닌 기존 집을 리모델링 하는 작업과 비슷하다. 기존의 뼈대 위에 새롭게 바꾼 외장재를 덧붙이는 형식이 많다. 그러나 필요에 따라 쓸모없는 공간을 부수고 다른 공간으로 만드는 것처럼 사이트의 기획도 부분적으로 수정하기도 한다. 물론 기획 수정이 들어가는 경우 더욱 많은 리소스가 필요하므로 전체적인 일정을 고려하여 기획 범위를 정해야 한다. 하고 싶은건 많은데 늘 시간은 부족하다그런데 난 디자이너이지 않나?디자이너가 해야 하는 영역과 기획자가 하는 영역이 있지 각각 있지 않을까? 나도 예전에는 그렇게 일을 했었다. 뼈대를 만드는 사람, 그리고 거기에 예쁜 외장재를 붙이는 사람이 구분된 업무를 진행해 왔다. 내가 준비한 외장재가 어울리는 뼈대를 찾는 게 아니라 그 뼈대에 맞는 외장재를 준비하는 디자이너였다. 그렇게 준비해온 외장재는 마음에 들지 않기 일쑤였고 무엇보다 전달받은 뼈대가 마음에 들지 않았다. 이러쿵 저러쿵 싫다면 둘다 하는 수 밖에 (출처: http://seokjun.kr/why-engineers-become-ceo/)게다가 핀다(Finda)에는 기획자라는 포지션이 따로 있지 않았다. 이렇듯 스타트업의 환경에서는 각 회사와 단계에 맞춰 기존의 포지션이 없기도 하는데, 특히 디자이너가 두 가지 역할을 동시에 해야 하는 경우가 자주 발생한다. 빠른 속도로 효과적인 결과물을 만드는데 가장 필요한 것은 절차의 단순화이고, 이를 가장 잘 소화할 수 있는 포지션이 디자이너라 생각되었다. 즉, 외장재를 붙일 뼈대를 처음부터 세우는 역할은 무엇보다 디자이너가 가장 잘 할 수 있다.그렇게 시작된 기획. 모든 프로젝트가 그렇겠지만 빡빡한 일정을 고려하여 (세상에 일정이 넉넉한 프로젝트는 존재하지 않는다) 다음 몇 가지를 다시 기획하였다.1) 메인페이지말 그대로 얼굴이다. 기회 초기에는 소비자가 가장 처음 보는 화면인 만큼 많은 정보를 한꺼번에 보여주고자 하였다. 그러나 사용성 데이터 분석결과 정성스럽게 준비한 내용을 끝까지 꼼꼼하게 다 보는 사용자는 극히 일부였다. 스마트폰이 이렇게 생기지 않는 이상 사용자가 화면 전체를 다 소화하긴 힘들 것이다. 일반적으로 광고를 돌리거나 이벤트를 진행하는 경우 보통 메인페이지로 랜딩을 시키지 않기 때문에 새롭게 개편되는 메인페이지의 역할은 핀다 사용자들이 필요로하는 정보가 모여있는 최종 목표 페이지, 즉 상품 카테고리별 대표페이지나 상품을 전체적으로 볼 수있는 리스트페이지로 자연스럽게 이동시킬 수 있는 목적을 구현하는 것으로 출발선으로 정하였다. 아울러 우리의 소중한 파트너사들을 위한 광고영역 (스크롤 없이 노출이 가능한 비율을 기준으로 하였다.)도 중요하기 때문에 이 영역도 미리 고려해 두었다.  모바일 화면상 핀다의 메인페이지를 구성하는 배너와 광고 영역의 예2) 메뉴 구성기존 GNB에는 상당히 많은 메뉴가 존재했다. 취급하는 상품이 다양하기에 그만큼 보여주고 싶은 것도 많았었다. 그렇게 하나둘씩 늘어난 메뉴의 가짓수는 그 상품의 목적이 비슷함에도 불구하고 별도의 메뉴로 나누어져 있었고 블로그 콘텐츠도 메뉴의 항목으로 구성되어 있었다. 리브랜딩 전 메뉴구성 (위) vs 리브랜딩 후 메뉴구성 (아래) 이번 리뉴얼에서는 여러 개로나누어진 상품들을 상품의 목적에 따라 카테고리화했다. 돈을 벌기 위한 '투자', 돈을 빌리기 위한 '대출', 그리고 소비를 위한 '카드' 크게 3가지로 나뉘었고, 브랜드관과 블로그를 추가하여 총 5개의 메뉴로 개편하였다. 기존에 있었던 블로그 콘텐츠, 특판상품은 새롭게 추가된 페이지 내부에 배치하여 메뉴 가짓수를 줄일 뿐만 아니라 프로덕트 전체에서 사용성 및 중요도에 따라 계층구조를 체계화시킬 수 있었다.3) 카테고리별 대표 페이지의 추가 상품 형식을 세 가지로 줄이고 각 형식에 해당하는 상품군을 배치하였지만 무턱대고 우리 이런 상품 정보가 있다고 줄줄이 보여주기에는 묶인 단위와 결과값이 너무나 방대하다고 생각했다. 하다못해 마트에서 수많은 물건중 하나를 고르기도 어려운데 금융인들의 일상용어로 꾸며진 상품은 오죽하겠는가... 사용자들이 가장 궁금해하는 일부 우려진 추천상품에 대한 정보 제공 및 자연스럽게 각 하위 상품들로의 연결, 계산기와 맞춤 추천, 나아가 관련 콘텐츠까지 자연스럽게 연결할 수 있는 일종의 허브 역할을 하는 대표 페이지를 새롭게 추가하였다.카드 추천을 위해 기획된 user flow별 실제 화면 (feat. 착착 이렇게만 넘어가면 좋겠는데)  이 페이지들은 메인페이지 -> 상품 메인페이지 -> 상품 목록페이지 -> 상품 상세페이지로 이어지는 플로우를 보다 자연스럽게 만들어 주었으며 다양한 목적의 랜딩페이지로도 활용이 가능하다. 4) 회사 소개 페이지의 상단 이동과거 나이 많은 CEO의 허세 가득한 비전만 담긴 회사소개와 달리 요즘 회사소개 페이지는 그 회사의 문화를 보여줄 수 있는 등 다양한 역할을 가지고 있다.전형적인 기업들의 진부한 CEO 인사말 일반적인 기업들과는 달리 핀다와 같은 스타트업의 경우 회사가 무엇을 하는 것 만큼 회사의 문화, 사람을 알고 싶어 하는 니즈가 더 크기에 기존 꼭꼭 숨어있던 회사소개 페이지를 과감히 상단에 배치하였다. 실제로 과거 사용성 데이터를 보았을 때도 상품 가입 페이지를 제외하곤 메뉴나 페이지 사용성이 매우 높은 페이지 중 하나였다. 회사가 나아가고자 하는 비전도 중요하지만 어떤 경험을 가지고 있는 사람이 모여있는지, 그리고 핀다가 브랜딩에 얼마나 애정을 가졌는지를 보여주고 싶었다. 회사 페이지 내 배치될 비전과 미션, 그리고 팀원들을 정성스레 소개하기 위해서 지난 몇개월간 팀 전체가 고민하며 더 꼼꼼하게 채워나갔고, 일반적으로 카메라를 들이대면 부끄러워하는 우리나라 사람들과 달리 매우 잘 포즈를 취해준 팀원들 덕분에 활기차고 당당한 프로필사진을 촬영하여 그대로 잘 활용할 수 있었다.Thanks to Photoshop and our team새로운 사이트를 이미 오픈한 시점에서 앞서 언급한 것 보다 더 많은 것을 구성했으나 반영하지 못하고 미리 고려해보지 못한 점들이 너무나 많이 있어 아쉽다. (그랬다면 아직도 오픈을 못 했을수도 있다. 명심하자. 프로젝트를 공개하는 것과 공개된 프로젝트를 유지 보수하는 업무 구분은 명확히 해야 한다. 그러지 못할 경우 계속 지연되는 것 밖에 없다.) 이번 글에는 무엇을 목적으로 어떻게 리브랜딩을 기획했는지에 대한 간단한 이야기를 해보았다. 다음 글에서는 좀 더 디자이너답게 프로덕트를 어떻게 꾸며 나가고 있는지에 대해 이야기해 보고자 한다.  #핀다 #디자인 #디자이너 #철학 #브랜드 #브랜딩 #인사이트
조회수 2757

GitHub 계정으로 Kubernetes 인증하기

초기에는 kube-aws가 만들어준 관리자 인증서를 통해 Kubernetes를 관리했는데 역시나 대내외적으로 여건이 바뀌니 변화가 필요했다. 내부적으로는 개발 인력이 늘고 여러 프로젝트가 동시 진행되니 Staging 환경이 급격히 바뀌는데 계정이 하나이니 누가 무슨 작업을 했는지 확인하기 어렵고 외부적으로는 경쟁사의 보안사고 등에 영향을 받아 보안을 강화할 필요가 생겼다. 하여 보안 관련 작업을 여럿했고 그 중 하나가 바로 GitHub와 Kubernetes를 OAuth로 엮는 일이다.기본적으로는 개발자 각자가 자신의 GitHub 계정으로 인증 토큰을 받고 이를 이용해 Kubernetes API에 접근하는 것이다. 전체적인 흐름은 How I built a Kubernetes cluster so my coworkers could deploy apps faster 등을 참고하면 이해하기 그리 어렵지 않다.1. Admin time should be saved (since they are also our developers)2. New users can generate their own credentials without needing the admin3. User credential is always private for security reasons4. Developers have their own space to experiment5. Project spaces can be accessed and changed by multiple users6. In the future, we may want to enable auditing to track changes다만 저들과 달리 Webhook 토큰 인증 플러그인을 직접 짜지 않고 coreos/dex를 이용했다. Dex를 이용하면 GitHub를 비롯해 다양한 OpenID, OAuth 2.0 인증 서비스와 Kubernetes 클러스터를 엮기 쉽다. 더욱이 kube-aws에 Dex가 통합되어서 설치하기도 쉽다.설치하기구구절절 어떻게 설정하는지 설명할 생각은 없는데 회사와 프로젝트에 따라 세부적인 차이가 꽤나 클 수 있기 때문이다. 그러니 대략적인 작업 순서를 간략히 기술하고 끝내려 한다.우선 kube-aws의 cluster.yaml를 보자.# # Enable dex integration - https://github.com/coreos/dex # # Configure OpenID Connect token authenticator plugin in Kubernetes API server. # # Notice: always use "https" for the "url", otherwise the Kubernetes API server will not start correctly. # # Please set selfSignedCa to false if you plan to expose dex service using a LoadBalancer or Ingress with certificates signed by a trusted CA. # dex: # enabled: true # url: "https://dex.example.com" # clientId: "example-app" # username: "email" # groups: "groups" # selfSignedCa: true # # # Dex connectors configuration. You can add configuration for the desired connectors suported by dex or # # skip this part if you don't plan to use any of them. Here is an example of GitHub connector. # connectors: # - type: github # id: github # name: GitHub # config: # clientId: "your_client_id" # clientSecret: "your_client_secret" # redirectURI: https://dex.example.com/callback # org: your_organization # # Configure static clients and users # staticClients: # - id: 'example-app' # redirectURIs: 'https://127.0.0.1:5555/callback' # name: 'Example App' # secret: 'ZXhhbXBsZS1hcHAtc2VjcmV0' # # staticPasswords: # - email: "admin@example.com" # # bcrypt hash of the string "password". You can use bcrypt-tool from CoreOS to generate the passwords. # hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W" # username: "admin" # userID: "08a8684b-db88-4b73-90a9-3cd1661f5466"우선 GitHub의 Organization Settings 메뉴로 가서 OAuth Apps에 Dex를 추가한다. 이때 Authorization calllback URL은 https://dex.example.com/callback가 된다.GitHub가 준 Client ID와 Client Secret를 cluster.yaml에 적어넣는다.dex: enabled: true url: "https://dex.example.com" clientId: "example-app" username: "email" groups: "groups" selfSignedCa: false # # # Dex connectors configuration. You can add configuration for the desired connectors suported by dex or # # skip this part if you don't plan to use any of them. Here is an example of GitHub connector. connectors: - type: github id: github name: GitHub config: clientId: "GITHUB_OAUTH_APP_CLIENT_ID" clientSecret: "GITHUB_OAUTH_APP_CLIENT_SECRET" redirectURI: https://dex.example.com/callback org: DailyHotel # # Configure static clients and users staticClients: - id: 'example-app' redirectURIs: 'https://kid.example.com/callback' name: 'Example App' secret: 'ZXhhbXBsZS1hcHAtc2VjcmV0'staticPasswords: - email: "admin@example.com" # # bcrypt hash of the string "password". You can use bcrypt-tool from CoreOS to generate the passwords. hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W" username: "admin" userID: "08a8684b-db88-4b73-90a9-3cd1661f5466"여기서 dex.example.com은 kube-aws가 띄울 dex Deployment와 연결되는 서비스(ELB)의 도메인주소가 되어야 한다. 그런데 kube-aws는 Dex의 External service를 생성해주지 않으므로 아래와 같이 직접 서비스를 생성해야 한다. GitHub가 이쪽으로 콜백을 보내야 하므로 방화벽을 열어야 하고 회사 도메인 인증서를 붙일 것이므로 `selfSignedCa`값은 `false`로 한다.apiVersion: v1 kind: Service metadata: name: dex namespace: kube-system labels: app: dex component: identity dns: route53 annotations: domainName: dex.example.com service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:blahblah service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https spec: ports: # the ports that this service should serve on - name: https port: 443 targetPort: 5556 protocol: TCP selector: app: dex component: identity type: LoadBalancer loadBalancerSourceRanges: - 0.0.0.0/0staticClients / example-app는 Dex에 포함된 예제 프로그램이다. 이를 이용하면 웹 브라우저를 통해 GitHub에 인증하고 토큰을 내려받을 수 있다. DailyHotel/kid 등의 도커 이미지를 사용하면 쉽게 띄울 수 있다. kube-aws는 이 예제 프로그램을 띄우지 않기 때문에 직접 올려야 한다.apiVersion: v1 kind: Service metadata: name: kid namespace: kube-system labels: app: kid dns: route53 annotations: domainName: "kid.example.com" service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:blahblah service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https spec: ports: - name: https port: 443 targetPort: 5555 protocol: TCP selector: app: kid type: LoadBalancer loadBalancerSourceRanges: - 사무실IP/32 --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: kid namespace: kube-system spec: replicas: 1 template: metadata: labels: app: kid spec: containers: - name: kid image: dailyhotel/kid:latest livenessProbe: tcpSocket: port: 5555 timeoutSeconds: 120 ports: - containerPort: 5555 env: - name: CLIENT_ID value: example-app - name: CLIENT_SECRET value: ZXhhbXBsZS1hcHAtc2VjcmV0 - name: ISSUER value: https://dex.example.com - name: LISTEN value: http://0.0.0.0:5555 - name: REDIRECT_URI value: https://kid.example.com/callback이때 example-app의 REDIRECT_URI는 Dex의 REDIRECT_URI와는 다르다는 점에 주목하자. 옵션의 이름이 비슷하기 때문에 헷갈릴 수 있다. 또한 CLIENT_ID와 CLIENT_SECRET은 cluster.yaml 중 GitHub connector 설정이 아닌 staticClients 설정에서 쓴 값이라는 점도 눈여겨볼 필요가 있다.이 정도만 주의하면 dex를 설치하고 설정하는 것은 어렵지 않다. 이제 인증하는 방법을 알아보자.인증하기웹브라우저로 kid에 방문해서 토큰을 받는다. 첫 화면에서 Login 버튼을 누른 후 GitHub 로그인을 하면 토큰이 나온다.GitHub Public profile 메뉴로 가서 Public email 설정을 확인한다. 공개 이메일이 없다면 하나 추가한다. 로그인시 사용자 아이디로 쓰기 위함이다.kubeconfig 파일을 열고 kubeconfig 파일을 열고 MY_PUBLIC_GITHUB_EMAIL에는 GitHub 공개 이메일 주소를 적고 VISIT_KID_EXAMPLE_COM_AND_GET_TOKEN에는 앞서 받은 토큰을 적는다.apiVersion: v1 kind: Config clusters: - cluster: certificate-authority: credentials/ca.pem server: https://MY_KUBE_CLUSTER name: kube-aws-cluster contexts: - context: cluster: kube-aws-cluster namespace: default user: MY_PUBLIC_GITHUB_EMAIL name: kube-aws-context users: - name: MY_PUBLIC_GITHUB_EMAIL user: token: VISIT_KID_EXAMPLE_COM_AND_GET_TOKEN current-context: kube-aws-context인증 파일의 설정이 정확한지 확인하려면 kubectl --kubeconfig=./kubeconfig version을 실행해보자. 아래와 같이 Client/Server의 버전이 둘다 나오면 정상이다.$ kubectl --kubeconfig=./kubeconfig version Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.1", GitCommit:"b0b7a323cc5a4a2019b2e9520c21c7830b7f708e", GitTreeState:"clean", BuildDate:"2017-04-03T20:44:38Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.2+coreos.0", GitCommit:"79fee581ce4a35b7791fdd92e0fc97e02ef1d5c0", GitTreeState:"clean", BuildDate:"2017-04-19T23:13:34Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}참고 자료johnw188/dex-exampleKubernetes / Authenticating#데일리 #데일리호텔 #개발 #개발자 #개발팀 #기술스택 #도입후기 #일지 #경험공유 #Kubernetes #Github
조회수 2114

개발자에게 필요한 좋은 개발도구들

안녕하세요. 크몽 개발팀 입니다~ 개발자는 무엇인가 개발하기 전에 준비해야될게 있습니다. 바로 개발도구들 과 자신에게 잘 맞는 셋팅이 필요하죠.그래서 이번에 개발환경을 셋팅하면서 알게 된 정보를 공유하기위해 이번 포스트를 작성하게 되었습니다.첫번째 개발도구는 'ampps' 입니다.  ampps는 개발에 있어서 필요한 다양한 개발도구들을 제공해주고 있는데요. 정석대로 하나씩 개발도구들을 설치하게 된다면 많은 시간을 투자해서 설치 및 셋팅을 해야하지만ampps는 한번의 설치만으로 Apache, MySQL, PHP, Python, MongoDB 등등 기본적인 셋팅을 통해 초보개발자이더라도 쉽고 편리하게 사용할 수 있다는점이 가장 큰 장점이라고 생각하고 있습니다.지원되는 운영체제는 Windows, Mac, Linux 모두 지원하기때문에 어느 운영체제는 지원이 안되는 불편함은 없겠네요.사이트 :http://www.ampps.com/ 두번째 개발도구는 'WebStorm' 입니다.  WebStorm은 비쥬얼스튜디오나 이클립스와 같은 통합 개발환경을 제공하고 있습니다.그리고 현재 자바스크립트 프로그래밍에서 절대적인 최고의 에디터로 개발자 사이에서 유명하고 많은 개발자들이 사용하여 개발하고 있습니다. WebStorm의 좋은점은 작성한 코드에서 에러가 있다면 JSHint가 에러부분 밑에 워드프로세서 철자법검사기처럼 빨간 줄로 에러를 표시해 주기때문에 개발자의 실수들을 바로 잡아줄 수 있어서 정말 좋습니다. 그러나 사용자는 30일 평가기간이 끝나면 추가비용을 지불해야 사용할 수 있는데요. 비용을 지불할 만큼 좋은 에디터인점은 변함이 없습니다.  사이트 : https://www.jetbrains.com/webstorm/  앞으로도 공유할 정보들이 생길때마다 크몽팀 블로그에 업데이트 할 예정입니다.포스트 내용에서 찾으시는 정보들을 찾으셨으면 좋겠고 크몽팀 개발자이야기에 많은 관심 부탁드립니다. :)이상 포스트를 마치겠습니다. #크몽 #개발팀 #인턴 #인턴생활 #경험공유
조회수 6319

Elastalert로 로그 알람 구축하기

Elasticsearch로 로그를 수집하고 추세를 분석하기는 좋지만 실시간 알람을 받으려면 X-Pack Alerting 등을 이용해야 한다. 하지만 사용자 편의성 측면에서 개선할 점이 많다. 로깅 알람 전용이 아닌 다양한 용도로 커스터마이징해서 쓸 수 있게 설계한 탓일 수도 있다. 아무튼 대안을 살펴볼 필요가 있겠다 싶어서 Yelp가 공개한 Elastalert로 알람을(도) 적용해보았다.X-Pack Alerting과 비교했을 때 Yelp/elastalert의 장점은 명확하다. 무엇보다 시나리오별로 정해놓은 패턴에 따라 알람을 작성하면 일이 쉽게 끝난다. 여덟 가지 정도의 알람 타입이 있어서 상황에 맞는 템플릿을 가져다 쿼리만 살짝 고치면 된다.“Match where there are X events in Y time” (frequency type)“Match when the rate of events increases or decreases” (spike type)“Match when there are less than X events in Y time” (flatline type)“Match when a certain field matches a blacklist/whitelist” (blacklist and whitelist type)“Match on any event matching a given filter” (any type)“Match when a field has two different values within some time” (changetype)“Match when a never before seen term appears in a field” (new_term type)“Match when the number of unique values for a field is above or below a threshold (cardinality type)예를 들어 OutOfMemoryError라는 단어가 로그에 찍혔을 때 알람을 받고 싶다면 다음과 같이 Rule 파일을 준비한다.# Alert when the rate of events exceeds a threshold # (Required) # Rule name, must be unique name: OutOfMemoryError # (Required) # Type of alert. # the frequency rule type alerts when num_events events occur with timeframe time type: frequency # (Required) # Index to search, wildcard supported index: logstash-%Y.%m.%d* use_strftime_index: true # (Required, frequency specific) # Alert when this many documents matching the query occur within a timeframe num_events: 1 # (Required, frequency specific) # num_events must occur within this amount of time to trigger an alert timeframe: hours: 1 # (Required) # A list of Elasticsearch filters used for find events # These filters are joined with AND and nested in a filtered query # For more info: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html filter: - query_string: query: "message: OutOfMemoryError OR log: OutOfMemoryError" # (Required) # The alert is use when a match is found alert: - "slack"기본 템플릿을 가져다가 filter에 들어갈 쿼리만 다시 작성하면 일이 끝난다. 파이썬으로 작성한 간단한 소프트웨어라 사용하기도 쉽고 Docker로 만들기도 쉽다. pip install elastalert 그 외에 경험한 특이사항만 정리하고 이 글을 끝내려 한다.Elasticsearch의 플러그인으로 작동하는 X-Pack과 달리 ElastAlert는 독립 실행 애플리케이션이다. Kubernetes 같은 환경에서는 독립 실행 애플리케이션이 더 관리하기 쉽다.알람을 추가/삭제할 때마다 도커 빌드를 하기 힘든 환경이라면 RESTful API를 지원하는 X-Pack이 편할 것이다. back-end / elastalert 같이 RESTful API를 지원하는 ElastAlert 환경이 있긴 하지만 도커 배포환경에서는 여러 모로 한계가 있다. 도커를 올렸다 내렸다 하더라도 설정이 날아가지 않게 하려면 고민이 많아진다. node 애플리케이션과 Python 애플리케이션 둘을 하나의 도커 이미지로 제공하다 보니 다른 문제도 많다. 이런 식의 구성을 구현해봤다면 무슨 이야기인지 알 것이다.ElastAlerts는 Index Aliases를 지원하지 않는다. 물론 오픈소스이니 소스코드를 고쳐서 Pull Request를 보내면 될 일이다.X-Pack Alerting과 달리 알람 메시지를 정형화했다. 알람의 메시지 포맷을 조금 고칠 수는 있지만 기본적으로는 주어진 그대로 써야 한다. 간단하게 쓰기에는 낫고 그렇지 않다면 소스코드까지 손을 대야 한다.ElastAlert는 중복 알람 처리 등의 정책을 지정할 수 있다. 알람을 하루에 수백통 넘게 받아보면 이 기능이 왜 중요한지 알게 된다.문서에서 언급하듯 Elasticsearch 5.x와 함께 쓰려면 다음과 같이 버전을 명시하는 편이 좋다. pip install elasticsearch>=5.0.0 && pip install elastalert==0.1.8테스트 환경은 elastalert-test-rule 명령어를 제공하는 ElastAlert쪽이 더 낫다. 검색 쿼리를 제대로 작성했는지 알람 설정은 맞는지 확인하기가 쉬웠다.더 읽기ElastAlert: Alerting At Scale With Elasticsearch, Part 1ElastAlert: Alerting At Scale With Elasticsearch, Part 2Originally published at Andromeda Rabbit.#데일리 #데일리호텔 #개발 #개발자 #개발팀 #일지 #후기 #도입후기 #Elastalert #인사이트
조회수 1524

사운들리 방송 송출테스트 이야기

안녕하세요 "사운들리"입니다 :) 오늘은 사운들리 사운드 비콘을 방송 콘텐츠에 실어 보내어 시청자의 모바일로 유용한 정보를 전달하기 위해 가장 중요하고, 힘들지만 마치고 나면 모든 팀원들이 가장 뿌듯함을 느끼는 방송 송출테스트 이야기를 하려 합니다.송출 테스트, 사운들리가 그 어려운 걸 또 해냅니다.<디지털 방송의 송출 경로> 위 그림은 우리나라 디지털 방송의 송출 경로의 한 예입니다. 실제 방송국이 지상파인지, 종편인지, 기타 케이블 채널인지 등에 따라 세부적인 변화가 더 있을 수 있지만, 위 그림만 보셔도 충분히 복잡해 보이실 것입니다. 우리나라는 DMB 등 일부 영역을 제외하고 디지털 방송 영역에서 대부분 미국식 표준 ATSC 관련 표준을 따르고 있지만, 유럽 국가와 뉴질랜드 등은 유럽식 표준인 DVB 관련 표준을 따르고 있습니다. 사운들리가 실제 송출테스트를 통해 증명하기 전까지 마주친 수많은 방송 실무자들, 방송 장비 업계 관계자, 학계 연구자들은 다양한 방송 장비에 의해서 사운들리 사운드 비콘이 유실되거나 왜곡되어 서비스가 불가능할 것 이라며 포기하라고 하였습니다. 하지만 이렇게 복잡하고 다양한 환경에서 사운들리는 대한민국과 터키에서 모두 서비스를 성공(!)함으로써 미국식 디지털 방송의 대표적인 예인 대한민국과 전형적인 유럽식 디지털 방송의 예인 터키 모두에서 서비스 제공이 가능하다는 것을 증명해 냈습니다 :)방송 송출, 그 험난한 검증의 시간 그렇다면 이렇게 복잡한 방송망을 거치고 나서도 사운들리 사운드 비콘이 시청자의 모바일로 안전하고 완전하게 전달될 수 있다는 것을 테스트하기 위해 어떤 과정을 거치는지 살펴보겠습니다. 사운들리가 방송 쪽으로 사업 방향을 잡고 나서 가장 힘들고 오랜 시간이 걸린 부분 중 하나가 방송국들에게 기술의 안전성과 안정성, 정확성을 설득하는 것이었습니다.기술의 안전성: 시청자 또는 반려 동물에게 선진국들의 가장 보수적인 규제 보다도 30dB 이상 낮음 음량으로 안전하게 전달된다는 점안정성: 방송 음량 송출 규제, 방송 콘텐츠의 오디오 등에 대해 영향이나 문제없이 안정적으로 동작한다는 점정확성: 극소 음량으로 안전하고 안정적으로 전달하면서도 수신율 99% 을 보장한다는 점방송은 매우 보수적인 분야로 만에 하나, 아니, 일 억 분의 하나라도 사운들리 사운드 비콘을 전송했을 때 방송 사고의 가능성은 없는지, 시청자 또는 반려 동물에게 조금이라도 불편을 끼칠 가능성이 없는 지 완벽히 검증된 기술만이 도입 가능합니다.송출 테스트 단계 사운들리 송출테스트 뿐만 아니라 방송 송출에 영향을 주는 새로운 장비나 기술은 다음과 같은 단계적 테스트를 거쳐 도입에 문제가 없는 지 검증을 하게 됩니다.1단계는 백업망을 통한 테스트입니다. 방송국은 방송 장비의 고장, 전송 선로의 고장등에 대비하기 위해 2중화된 구조를 가지고 있습니다. 문제가 생길 경우를 대비해 언제든지 백업망으로 전환시킬 준비를 해두는 것입니다. 그러므로 실제 시청자에게 전달되지는 않지만, 동일한 구조를 가지고 있는 백업망을 통해 사운들리 사운드 비콘의 송출이 기존 방송 송출을 하는데 영향이나 문제가 없음을 1차적으로 확인합니다. 즉, 앞에서 말씀드린 안전성과 안정성에 대한 기본적인 테스트가 이루어집니다.2단계는 방송 조정 화면 또는 방송 고지 화면 등을 활용한 테스트입니다. 방송 조정화면은 흔히 말하는 애국가 방송이 끝나고 새벽 방송이 시작하기 전, 나오는 컬러바 화면+테스트 음향(삐하는 테스트음 이나 음악) 이 나오는 구간을 의미하고, 방송 고지 화면은 "XXX 방송국은 방송 심의위원회의 규정을 준수합니다" 식의 멘트나 자막이 나오는 구간을 의미합니다. 방송 조정 화면이 존재하는 채널에서는 해당 구간에서 테스트를 하고, 24시간 방송이 송출되는 채널에서는 후자를 많이 사용합니다. 해당 화면을 테스트에 사용하는 이유는 아무래도 심야 시간이고 시청자가 적기 때문입니다. 2단계 테스트 부터는 사운들리 팀원들이 총출동하여 모든 종류의 플랫폼에서 검증을 하게 되는데요. 안테나를 통한 직접 수신 부터 LG 유플러스, KT 올레, SK 브로드밴드 등 IPTV 3사, KT Skylife, 수많은 케이블 사들 (CJ 헬로비전, 현대 HCN, T브로드 등등) 모두에서 정상적으로 방송 송출이 되는지 각자의 집, 또는 지인의 집, 전국의 모텔을 떠돌며 방송 캡쳐 장비를 통해 엄밀히 측정하게 됩니다. 2015년 방송국 A사 송출 테스트의 경우, 수도권부터 제주도까지 전국 15개가 넘는 A사 방송국에 대해 50 개가 넘는 방송 수신 환경에서 송출 테스트를 확인했습니다."초면에 죄송하지만, 새벽 4시에 5분만 댁에서 TV를 볼 수 있을까요? ^^.." 당시 강원도 A사의 Skylife 수신 테스트를 맡은 사운들리 모 팀원은 Skylife 를 사용하는 강원도 모텔을 찾기 위해 수십 군데의 모텔을 탐방하였습니다. 하루 종일 계속된 탐방에도 불구하고 Skylife 사용 업체를 찾는 데 실패한 모 팀원 결국 강원도에 사는 친구의 아파트를 방문하여 무작정 Skylife 안테나를 달고 있는 친구의 아파트 이웃 주민을 설득하였습니다. 오늘 새벽 4시 경에 애국가 끝나고 5분만 TV 보게 해달라는 이웃 주민의 친구의 뜬금없는 부탁... 결국 새벽 4시 경에 있었던 송출 테스트를 처음 보는 남의 집 거실에서 진행했던 김모 팀원의 이야기는 지금도 사운들리에 전설로 남아있습니다. 이렇게 힘든 2단계 테스트를 거쳐서 시청자 단에서의 수신 테스트가 완료되면 앞에서 설명한 시청자의 기술 안전성과 안정성이 어느 정도 검증됩니다.3단계는 실제 방송 콘텐츠에 직접 사운들리 사운드 비콘을 실어 보내는 실서비스와 동일한 형태의 테스트입니다. 최근에 사운들리와 새롭게 진행하는 방송국들은 사운들리 서비스의 안정성과 성능에 대한 소문을 들으셨는지 대부분 1, 2 단계의 테스트를 생략하고 바로 3단계 테스트를 진행하는 경우도 많습니다. 3단계 테스트까지 진행되면, 비교적 긴 시간 사운들리 사운드 비콘이 전송되므로 수신 정확성을 측정할 수 있을 정도의 데이터를 확보할 수 있습니다. 앞선 2단계에서의 송출 테스트는 짧게는 15초 내외에서 길어야 10분 내외 정도로 진행되기 때문에 엄밀한 정확성을 검증하기에는 데이터가 부족합니다. 그러므로 보다 세밀한 검증이 3단계 테스트에서 이루어지게 됩니다.마치며Scene #21. 전라남도 보성 어느 모텔사운들리 직원 "사장님 여기 Skylife 나와요? 제가 꼭 봐야하는 채널이 있어요." 모텔 사장 (껄끄러운 표정으로) "(뭐야 이 변X는...) Skylife는 아닌데, 우리 모텔 성인 채널 많이 나와." 사운들리에 입사하실 미래의 사운들리 팀원은 이른 새벽 사장님에게 변X 취급 당하며 위와 같이 Skylife고픈 하이에나 같이 수십 군데 모텔을 뒤지는 신선한 경험을 할 기회는 더 이상 없을 지도 모르겠습니다(픽션 아니고 실제 경험담입니다 ^^). 하지만, 내년 쯤에는 영화에서나 본 미국 싸구려 모텔을 뒤지며 "Do you provide XXX cable? " 하고 묻고 다녀야 할 지도 모르겠네요 ㅎㅎ 서두에서도 말씀드렸지만, 방송 송출테스트는 화자 역시도 회사에 들어와서 졸음+쪽팔림과 싸우며 가장 힘들게 진행한 업무 중 하나였습니다. 그렇지만 끝나고 나면 가장 보람되고, 추억이 되며, 팀원들을 하나로 묶어준 의미있는 시간이기도 했습니다. 혹시 방송쪽 서비스를 준비하고 계시면서 방송 테스트나 환경에 대해 궁금하신 스타트업 동지들은 언제든지 사운들리의 경험과 노하우를 공유해드릴테니 연락주세요. 오늘도 사운들리의 글을 읽어주셔서 감사합니다 :)#사운들리 #경험공유 #스타트업 #워크플로우 #업무프로세스 #협업 #HowtoWork
조회수 615

웹뜰이 하이서울브랜드로 선정되었습니다!! 

패션블로그 웹뜰입니다오늘은 여러분과 함께 기쁜 소식을 나누고파이렇게 찾아왔습니다!바로바로 이번에 저희 웹뜰이 하이서울브랜드로 선정과 신규 기업 환영식에 다녀왔습니다~ 하이서울브랜드가 뭐지? 이런 생각이 드는 분들도 많으실텐데하이서울브랜드는 서울 소재 유명 중소기업의 제품 경쟁력을 강화시키기 위해 서울특별시 도시 홍보 슬로건인 'Hi Seoul'을 활용하여 만든 서울시 우수 중소기업 공동 브랜드입니다하이서울브랜드는 뛰어난 기술력을 바탕으로 글로벌 경쟁력을 갖춘 기업 위주로 선정되며또한 서울산업진흥원은 엄격한 심사 과정을 거쳐 서울시 소재 유망 중소기업에하이서울브랜드를 사용할 수 있는 권한을 부여한다고 합니다블로그를 찾아주시는 이웃분들과 고객분들의 큰 관심과 사랑 덕분에웹뜰이 이렇게 나날이 성장하고 있습니다너무 감사드려요~이번 행사는 신규 기업 환영행사였는데요우수한 강소기업에게 서울시장 명의의 지정서 배부를 비롯하여 각 기업의 소개를 하는 시간도 가졌답니다저희 웹뜰도 열심히 소개해드리고 다양한 분야의 기업에 대한 소개도 들으며좋은 시간을 가졌어요~지정서를 수령하고 포토존에서 웹뜰 대표님인 이태경 대표님의 기념사진도 찰칵!너무 잘 나오셨죠~?함께 참여해주신 다양한 기업의 대표분들과 함께 기념사진도 찍는 시간을 가졌답니다이렇게 이 날 받아온 인증서는 이렇게 웹뜰에 전시해 높았습니다서울특별시에게 선정된 하이서울브랜드에 만족하지 않고더욱 여러분들에게 만족스럽고 받은 사랑을 베풀기 위해 노력하는 웹뜰이 되도록 하겠습니다앞으로도 많은 사랑과 관심부탁드리고 더욱 발전하는 웹뜰이 될께요~#웹뜰 #웹뜰블로그 #하이서울브랜드 #서울특별시 #Hiseoul
조회수 1088

MySQL에서 RDS(Aurora) 로 이관하기

안녕하세요. 스티비팀 서버 개발자 이학진 입니다. 저희는 최근 서비스에서 사용 중이던 MySQL DB를 RDS로 이관하는 작업을 진행하였습니다. 무엇 때문에 이관을 결정하게 되었는지와 어떻게 이관을 진행하였는지에 대해 글을 써보도록 하겠습니다.배경stibee.com은 작년 11월에 정식 오픈한 새내기 이메일 마케팅 서비스 입니다. 사실 오픈 초기부터 얼마전까지만 해도 AWS EC2의 m4.large 인스턴스 하나로 운영되던 서비스였습니다.(사실 웹+API 서버 1대, 메일발송서버 1대)그리고 이 싱글 인스턴스에 무려 6개의 서버, mysql 1개, kafka 1개, redis 1개가 돌고 있었습니다. 그럼에도 불구하고 cpu사용률은 20%를 넘지 않았습니다.하지만 최근 사용자도 점점 늘어났고, 네이버에서 메일 수신정책을 변경하면서 메일발송서버에 대한 요청이 급증했습니다.스티비에서 네이버로 대량메일을 발송했을 때 해당 메일의 본문 링크를 자동검사하는 것을 발견했는데요, 따라서 네이버로부터 비정상적으로 많은 요청이 들어오고 있었습니다. (어떤 기준으로 이런 검사를 하는 것인지 정확한 정책은 아직 모릅니다. 담당자분 이 글을 보신다면 연락주세요. 친하게 지냈으면 합니다#슬로워크 #스티비 #개발 #서버개발 #개발환경 #MySQL #인사이트
조회수 1424

60원으로 빈집털이를 예방하는 방법

안녕하세요? 요즘 직장 근처에서 자취하시는 분들이 많습니다. 이 글을 읽고 계시는 자취생분들은 혹시 빈집털이 범행 수법을 알고 계시나요?불 꺼진 집 = 빈집털이 범행대상보통 밤늦게까지 불이 꺼져있는 집이나 여행을 가서 불이 며칠간 켜지지 않는 집이 범죄의 대상이 된다고합니다.서울 광진구 주택가 빈집털이범 검거 뉴스 - 출처: 연합뉴스아파트에 비해 저희가 자취하는 주택,빌라는 보안이 특히 더 취약한데요. 가끔식 치킨 배달원이 저희집 빌라 출입번호를 알고 누를 때는 조금 섬뜩하기도 합니다.범죄 예방법불이 켜져 있는 집은 범죄 대상에서 제외될 확률이 높다.사실 24시간 불을 켜두면 빈집털이를 예방할 수 있습니다. 집에 불이 켜져있거니와 전기 소모로 계량기가 돌아가서 집에 사람이 있다고 판단을 하니까요.그러나 항상 불을 켜둘 수 없습니다. 전기세가 낭비될 뿐만 아니라 형광등을 자주 갈아야 하니 귀찮습니다. 또한 지금 집에 몇 십년 살것도 아니라서 비싼 CCTV를 달거나 방범 서비스에 가입하기도 좀 그렇습니다.스위처: 스마트홈을 만드는 가장 저렴하고 쉬운 방법누구나 쉽게 설치 할 수 있는 스마트홈 제품 스위처하루 60원으로 여러분의 자취방을 편안한 보금자리로 바꿔보세요.스위처는 원하는 시간에 맞춰 집안 불을 켜고 끄는 스마트홈 제품입니다.설치가 매우 쉬워요. 위에 사진처럼 스위치 위에 부착하기만 하면 끝입니다. 이사갈 때 떼어 가시면 되구요.스위처 전용 어플리케이션 모습전용 앱으로 타이머 설정하시면 집에 내가 없어도 스위처가 스스로 불을 켜고 끈답니다. 또한, 리모컨처럼 사용할 수 있어서 불을 멀리서 켜고 끌 수 있어요. 스위처는 멀어질수록 빛납니다.돈 내지 말고 무료로 써보세요.스위처는 무료배송, 무료사용, 무료반납하루 60원을 내기 전에 무료로 먼저 써보세요. 스위처는 한 달 무료 사용 서비스를 제공합니다. 아무리 저렴해도 나에게 필요한 제품인지 직접 사용해 보고 판단해 보세요. 택배비 조차 무료입니다.하루 60원, 스위처로 여러분의 자취방을 안전하게 바꿔보세요.범죄는 예방이 최선입니다. 집에 도둑이 들고나면 물질적 손해뿐만 아니라 정신적인 상처도 정말 큽니다. 여러분의 집을 불안한 공간으로 만들지 마세요. 스위처라면 저렴하고 간단하게 내 자취방을 안전한 보금자리로 만들 수 있습니다.스위처 신청하러가기(링크 클릭)관련 자료스위처 인스타그램 사용 후기스위처 네이버 블로그 사용 후기“망원경 들고 불꺼진 집 노렸다”…빈집털이 2인조 구속‘초저녁 불 꺼진 집’ 노려 빈집털이 60회…40대 구속#스위처 #Switcher #서비스소개
조회수 1371

페이스북에 처음 투자한 사람은 얼마를 벌었을까?

그투그 #8 페이스북에 처음 투자한 사람은 얼마를 벌었을까? 이제는 너무나 유명한 성공 신화죠. 하버드생 마크 저커버그는 2004년 하버드 학생들을 대상으로 ‘더페이스북’이라는 서비스를 론칭합니다. 그로부터 15년이 지난 지금 페이스북의 기업가치는 5,000억 달러를 훌쩍 넘었습니다. (최근에 주가가 폭락했음에도 불구하고요. 5,000억 달러는 한국 돈으로 566조가 넘습니다.) 마크 저커버그가 세계에서 손꼽는 부자가 된 건 말할 것도 없죠.저커버그야 그렇다 쳐도, 페이스북에 처음 투자한 사람은 얼마나 벌었을까요? 페이스북에 처음 투자한 사람은 페이팔의 공동 창업자 피터 틸입니다. 피터 틸은 2004년, 이제 막 서비스를 시작한 페이스북에 6억 원을 투자하고 지분의 10%를 샀습니다. 60억 원이었던 기업가치는 만 배 가까이 뛰어 566조가 되었죠. 그가 지금까지 페이스북 주식을 얼마나 가지고 있는지는 알 수 없습니다. 만약 지금까지 페이스북 주식을 하나도 팔지 않았다면? 6억은 56조가 되었을 겁니다.하버드생에, 페이팔 창업자라니! 게다가 숫자가 너무 크니 너무 먼 이야기처럼 느껴집니다. 억도 아니고 조 단위라니요……(먼 산) 2004년의 피터 틸까지 갈 것도 없습니다. 2012년 페이스북이 나스닥에 상장한 날, 페이스북의 기업가치는 121조 원이었습니다. 그 날 제가 페이스북 주식을 100만 원어치라도 샀다면, 제 100만 원은 지금 500만 원이 되었겠죠. 이렇게 미래에 성장할 기업을 남들보다 조금만 더 일찍 알아보고 투자한다면 큰 투자수익을 기대할 수 있습니다. 그럼 내 눈앞에 있는 스타트업이 (페이스북만큼은 아니더라도) 성장할 회사인지 아닌지 어떻게 알 수 있을까요?스타트업 투자에는 MAP 말고 MEP이 필요해제가 지금 제 미래도 모르는데 이렇게 많은 기업이 새로 생기고 문을 닫는 시대에 기업의 미래를 어찌 알겠습니까. 그것도 대기업도 아니고 이제 막 생긴 작은 회사들의 미래를요! 정해진 길도, 정답도 없죠. 하지만 MEP을 보면 이 기업이 나아갈 길을 희미하게나마 예측해볼 수 있어요.1) Market: “이 회사의 물건을 팔 시장이 있나요? 있다면 얼마나 큰 가요?”회사는 일반적으로 일정한 가격에 재화나 서비스를 제공하고 그에 따른 수익을 창출합니다. 그래서 가장 중요한 것은 이 회사가 제공하는 제품이나 서비스를 돈을 주고 ‘살’ 고객이 있느냐이죠. 고객이 얼마나 있고, 고객 수는 얼마나 빠르게 늘어나고 있느냐가 바로 여기서 이야기하는 Market(시장)입니다.가장 중요한 것은 시장이 존재하느냐입니다. 애초에 시장이 존재하지 않는다면 사업을 성장시키기는커녕 유지하기도 쉽지 않겠죠. 시장이 존재한다고 해도 성장의 속도는 얼마나 빠른지, 이 시장이 얼마나 커질지 살펴봐야 해요. 시장이 빠르게 커진다는 건 고객이 빠르게 늘어난다는 뜻이므로, 사업도 빠르게 성장할 것을 알 수 있습니다. 반대로 시장의 성장이 더디면, 사업의 성장 속도도 정체되겠죠. 성숙한 산업에 속한 기업이라면 정부기관이나 금융기관에서 발행하는 각종 시장 보고서, 현재의 시장점유율, 매출의 증가 추이, 경쟁사 분석 등을 통해 시장이 얼마나 빠르게 성장할지 전망을 예측해볼 수 있어요. 하지만 새로운 시장을 개척하는 초기 단계의 스타트업은 이러한 방식으로 시장을 예측하기 쉽지 않습니다. 이때 국외 시장을 살펴보는 게 도움이 됩니다. 요즘 세상이 워낙 좋아져서 구글링 몇 번이면 해외 시장 트렌드를 쉽게 찾아볼 수 있습니다. 미국처럼 스타트업 생태계가 활성화된 해외 시장에서 커지고 있는 시장이라면? 우리나라에서도 성장할 가능성이 큽니다. 하지만 이미 해외시장에서 사장된 사업이라면 조심해야 해요. 우리나라에서도 비슷한 어려움을 겪을 수 있으니까요. 2) Player: “이 회사, 시장에서 몇 등인 가요? 대표이사는 누구인가요?”시장의 가능성을 보았다면 이제 그 시장에서 누가 가장 잘하고 있는지 살펴볼 때에요. 시장이 빠르게 성장하고 있는데 내가 투자하려는 회사가 시장 점유율 1위라면? 투자의 긍정적인 신호로 볼 수 있습니다. 하지만 시장이 아무리 빠르게 성장하고 있더라도 이미 시장 점유율이 압도적으로 높은 1, 2위 업체가 있다면 성장에 한계가 있을 수밖에 없지요.아직 시장이 초기 단계라 압도적인 선두 기업이 없다면, 기업을 이끄는 대표이사의 역할이 무엇보다 중요합니다. 투자자는 자체적으로 조사한 자료와 가설을 바탕으로 제시하는 시장의 크기가 논리적으로 얼마나 타당한지 확인해보아야 합니다. 시장의 규모가 큰 것도 중요하지만, 창업가가 왜 그렇게 생각했고 이를 공략할 전략을 어떻게 세웠는지도 굉장히 중요하죠. 결국, 사업은 사람의 일이니까요. 축구에서도 감독의 적절한 전술과 뛰어난 선수들의 실력이 만나야 좋은 결과가 나올 수 있듯, 사업에서도 아무리 분석을 잘하고 전략을 잘 짜도 실행력이 뒷받침되지 않으면 이길 수 없습니다. 대표이사와 주요 임원진이 얼마나 똑똑한지와 더불어 생각을 현실로 옮길 수 있는 실행력이 있는지 살펴봐야 합니다. 그간의 이력과 업계 평판을 통해 그들이 어떻게 살아왔고 어떻게 일하는지 유추해볼 수 있습니다. 이전 사업의 성공 경험이 있다면 더 믿음이 가겠죠?와디즈를 통해 투자를 유치하려는 기업은 반드시 투자설명서에 시장과 경쟁사를 분석한 내용을 기재해야 합니다. 대표이사를 포함한 주요 임원진의 이력과 레퍼런스 체크를 위한 추천사도 필수로 작성해야 하죠. 투자 전에 와디즈 플랫폼에서 이 회사가 시장에서 어떤 위치에 있는지, 대표이사와 주요 임원진은 믿을만한 사람인지 살펴보면 투자 위험을 낮출 수 있습니다. 3) Exit: “이 주식, 언제 돈으로 바꿀 수 있나요?”흔히 싸게 사서, 비싸게 파는 것이 주식투자의 기본이라고 말합니다. 하지만 아직 상장되지 않은 회사의 주식을 살 때는 고려해야 할 점이 하나 더 있습니다. 투자자가 주식을 팔아 투자금을 회수하는 것을 Exit이라고 합니다. 초기기업의 주식은 싸게 살 수 있지만, 회사가 시장에 상장하지 못하고 문을 닫게 되면 아예 팔지 못할 수도 있습니다. Exit을 할 수 없다면 이 기업이 성장해서 기업가치가 올라도 아무 소용이 없겠죠. 그래서 Market, Player와 함께 Exit 계획도 잘 살펴보아야 합니다. 스타트업은 크게 IPO(기업공개)와 M&A(인수합병) 두 가지 방법으로 Exit 할 수 있습니다. 기업공개 (IPO, Initial public offering)는 기업이 처음으로 불특정 다수의 투자자에게 재무내용을 공시하고 회사의 주식을 시장에 등록해 파는 것을 말합니다. 우리가 흔히 알고 있는 상장을 의미하죠. 와디즈에서는 대체로 초기 단계의 회사가 기업가치 10억~50억 사이에 투자를 받습니다. 내가 투자한 회사가 코스닥에 상장한다면? 보통 기업가치가 1,000억 원이 넘어야 코스닥에 상장할 수 있으므로 20~100배의 투자 이익을 얻을 수 있습니다. IPO가 어렵더라도 내가 투자한 회사가 국내외 기업에 인수합병(M&A)되면 투자금을 회수할 수 있습니다. 최근에는 아직 상장하지 못한 회사라도 KSM(한국거래소 스타트업 마켓)에 등록만 되어 있다면 거래할 수 있어졌습니다. 기업이 일정 기간 뒤에 투자자로부터 주식을 사서 현금으로 돌려주는 상환권이 있거나 배당정책을 시행하는 우선주에 투자하면 IPO나 M&A가 아니더라도 현금화할 수 있습니다.Exit 계획이 아무리 거창하더라도 이미 비슷한 제품이나 서비스를 판매하는 회사 중 시장 점유율이 압도적인 기업이 있거나, 판매하려는 제품이나 서비스의 차별점이 명확하지 않다면 한 번 더 생각해보셔야 해요.이 밖에도 흔히 스타트업의 데스밸리라고 불리는 초기의 적자 구간을 버텨낼 자본이 있는지, 자본이 없다면 대표이사가 투자를 받아낼 능력이 있는지, 회사의 매출액은 증가하고 있는지, 증가하고 있다면 증가 폭이 얼마나 큰지 생각해보면 조금 더 피터 틸에 가까워질 수 있습니다. 채권에 투자할 때만큼은 아니더라도 재무제표도 들여다보면 도움이 됩니다.남들이 아직 관심을 두지 않는 회사에 미래를 보고 투자하는 게 이렇게나 복잡해요. 오랜 시간 살펴보고 투자 성공과 실패를 통해 나름의 통찰력이 생겨야겠죠. 지금부터라도 MEP을 펼쳐 두고, 하나하나 살펴보면 그날이 오기를 기다리며 새롭게 커지는 시장에 관심을 가지고, 누가 잘하는지, 어떻게 투자수익을 실현하는지 살펴보세요. 언젠가는 제2의 페이스북을 찾을 수 있을지도 모릅니다.글 김영아와디즈의 막내 투자 콘텐츠 디렉터(CD)입니다. 우리의 작은 돈이 필요한 곳에 모여 세상을 바꾸는 꿈을 꾸고 있어요. 아 물론 돈도 벌면서요. 더 많은 ‘우리’에게 크라우드 펀딩을 알리기 위해 어렵고 복잡한 투자 이야기를 쉽고 재미있게 풀어내는 일을 합니다. 이 글을 읽고 더 궁금한 점이 생겼다면?▶그림 이윤경와디즈의 브랜드 디자이너입니다. 좋은 '사람' 와디즈가 좋은 '브랜드'로 무럭무럭 자라나도록 물을 주고 있어요. 더 많은 사람들의 시작을 돕기를, 그리고 더 재미있는 세상을 만들어 가기를 기대하고 있습니다.#와디즈 #마케터 #마케팅 #브랜드 #브랜딩 #서비스소개 #크라우드펀딩
조회수 2639

VC 투자의 일반적인 프로세스

내가 VC 투자에 관한 엄청난 비밀이나 노하우를 알고 있지는 않다. 그냥 내가 몇번 경험 해본 것을 바탕으로 기본적인 내용을 쉐어 하려고 한다. 가끔 스타트업 대표들을 만나게 되면 가장 기본적인 사항도 모르시는 분들이 간혹 있기 때문에 이러한 기본적인 사항도 도움이 되지 않을까라는 생각으로 글을 쓴다. 이걸 안다고 VC 투자를 받는 거는 아니지만 VC 투자를 받기로 결정했다면 알아두면 조금 도움이 되지 않을까 한다. 그래서 가급적 이 글에서는 개인적 견해보다는 지극히 일반적인 사실에 대해서만 쓰려고 한다. 이 글이 스타트업을 처음 시작하는 창업가들에게 조금이나마 도움이 되었으면 좋겠다.일단 VC 투자의 첫 번째 단계는 심사역을 만나는 것이다. 이 단계가 정말 중요하다. 첫 단추이자 첫 관문이다. 벤처 캐피털 업계의 실무 담당자라고 보면 맞을 것 같다. 보통 "팀장", "차장", "부장", "과장" 등의 명함을 가지고 각종 스타트업 관련 행사에 참석을 하고 투자할 만한 회사들을 찾으러 다닌다. 스타트업도 투자자를 찾지만 투자자들 즉 심사역들도 좋은 스타트업들을 찾고 있다. 이 사람들을 만나는 방법은 정말 다양하다. 사적 네트워크, 지인의 소개, 그리고 각종 행사 등등을 통해서 이 사람들을 만나서 자신의 아이디어를 어필하고 다음 단계로 넘어가야 한다. 담당 심사역은 정말 중요하다 VC 투자의 모든 프로세스의 파트너이기도 하고 투자를 받고 나서는 지속적으로 회사를 관리하는 사람도 담당 심사역이기 때문이다. 그렇기 때문에 스타트업 대표와 담당 심사역의 인간적이 Fit도 중요한 요소이다.일단  심사역의 관심을 끌었다면 심사역은 자세한 사업계획서 즉 IR자료를 보자고 할 것이다. 그리고 제품이나 서비스도 확인하고 창업 멤버들도 만나볼 것이다. 그리고 다양한 질문들을 하면서 회사를 좀 더 자세히 파악할 것이다. 이 과정이 미팅 몇 번으로 끝날 수 도 있고 1년이 걸릴 수도 있다. 1년이 걸릴 수 있다는 이야기는 심사역이 판단하기에 투자받을 수 있는 단계가 아니라고 생각해서 좀 더 지켜보자는 의견을 줄 수도 있기 때문이다.일단 심사역이 이제 다음 단계로 넘어가도 될 것이라고 판단하다면 공식 IR을 하자고 할 것이다. 이제 심사역뿐만 아니라 그 심사역이 속한 하우스 전체 즉 대표를 포함한 대부분의 임원들이 있는 자리에서 발표할 수 있는 기회를 잡을 것이다. 이 자리에서 수많은 질문 공세와 공격이 들어올 것이다. 이 질문 공세와 공격을 통과해야 다음 단계로 넘어갈 수 있다.이제 IR을 통과했다면 심사역은 Due Diligence를 할 것이다. 즉 다시 한번 스타트업이 주장하는 내용들을 검증하고 Reference Check도 하고, IR 때 해소되지 않았거나 새롭게 제기되었던 문제들을 다시 한번 검증을 하기 위한 여러 가지 자료들과 질문들을 요청할 것이다.Due Diligence를 무사히 통과했다면 이제 본격적인 투자 협상을 해야 한다. 밀고 당기는 싸움을 하고서 협상이 마무리되고 합의된 투자 조건인 Term Sheet을 줄 것이다. 그리고 그 Term Sheet과 Due Diligence를 한 내용을 바탕으로 예비 투심을 할 것이다. 대부분 예비 투심은 투자회사 내부에서 하는 투자 심사를 말한다. 투자 회사 내부의 사람들이 모여서 이제까지 심사역이 준비한 자료를 바탕으로 다시 격론을 벌일 것이다. 그리고 이걸 통과한다면 LP 즉 펀드에 돈을 댄 기관에 보고하는 절차인 최종 투심을 진행할 것이다. 그리고 이러한 투심이 진행되는 동안 심사역과 스타트업의 대표는 계약서 문구를 협의해서 계약서를 마무리할 것이다. 회계감사도 이 과정 중에 받게 될것이다.그리고 최종 투심도 끝나고 계약서도 마무리되었다면 투자금을 받게 되는 것이다.VC 투자는 필수가 아니라 창업자의 선택이다. 하지만 받고자 결정했다면 좀 더 준비하고 알아보는 것이 중요하지 않을까 생각한다.  그리고 앞에서 설명했듯이 오늘 투자 받기로 마음먹는다고 내일 돈이 들어올 수 없는 구조이다. VC는 기관 투자가이기 때문에 정해진 절차를 지켜서 투자를 한다. 그렇기 때문에 최소 3개월에서 6개월은 잡아야 한다. 때에 따라서 더 걸릴 수 있다. 또한 위에 설명한 각 단계별로 어떠한 요인으로 인해 중간에 Drop될 가능성이 언제나 존재한다. 말그대로 끝날때까지 끝나는게 아니다. 그렇기 때문에 받기로 결정했다면 돈이 떨어지는 속도를 파악하고 미리 준비하고 움직여야 낭패를 면할 수 있다.#NEOFECT #스타트업 #스타트업창업 #창업자 #투자유치 #VC #자금유치
조회수 2808

야놀자 앱은 왜 자동실행 되나요?

pluu 04 JUL 2018저는 야놀자 CX서비스실의 Android 파트에서 레이아웃 깎기와 Kotlin과 새로운 Android 기술을 전파하는 노현석입니다. 야놀자에 합류하고서 경험한 가장 독특한 케이스에 대해서 이야기해 보려고 합니다.시작은 물음표부터언제부터인가 야놀자앱을 설치하거나 업데이트하면 앱이 자동으로 실행된다는 리뷰가 들어오기 시작했습니다.네?! 그게 무슨 말이에요?안드로이드 개발을 시작한 이래로 처음 들어보는 내용이라, 원인도 정확한 해결책도 떠오르지 않는 그런 리뷰였습니다. 그래서 자연스럽게 브라우저를 켜서 구글에 검색을 먼저 해봤습니다. Android, Auto Start, Install 등 다양한 검색 결과로 일정한 패턴의 내용을 확인할 수 있습니다.  Intent Action 관련 내용android.intent.action.PACKAGE_ADDEDandroid.intent.action.PACKAGE_CHANGEDetc.Broadcast Receiveretc.일반적으로 안드로이드 앱이 설치 및 업데이트될 때 발생하는 이벤트(이하 Broadcast)를 받는 방법에 대한 설명이 많습니다. Broadcast는 배터리 변화, 전화 여부, 와이파이 등 시스템의 상태 변화를 감지하거나 서비스 내부적에서 이벤트를 전달하기 위해 사용합니다. ???? 실질적인 해결책은 되지 않지만, 범위를 좁혀서 찾아볼 포인트로 Intent 의PACKAGE관련 액션을 포커스로 잡았습니다. 하지만, 야놀자앱에서는 마케팅 성과 측정을 위해com.android.vending.INSTALL_REFERRER를 광고 트래킹 SDK에서 사용하는 것 이외에는 별도의 작업을 하지는 않습니다. 그러나, 이를 알 리가 없는 사용자는야놀자 앱이 일으키는 문제라고 인지하기 쉽습니다.  일차적으로, 어느 경로를 통해서인지는 모르지만 누군가가 야놀자 앱을 실행하는 것이라고 생각했습니다.야놀자 앱 사용자의 기기에 설치된 모든 앱 리스트를 받아올 수도 있고, 리퍼럴에 따른 앱 실행경로를 모두 수집할 수도 있지만, 단순히 버그를 찾기 위해 사용자의 동의 없이 정보를 수집할 수는 없기 때문에 장기전으로 돌입하게 되었습니다. 하지만 동일한 리뷰는 계속되었고 여전히 뚜렷한 해결책이 없는 채로 시간이 흘러갔습니다.  저 재현되는데요증상이 나타나지만 재현은 되지 않고, 재현 경로를 단기간에 파악하기는 어려운 과제였습니다. 한두 명에 불과하던 제보가 시간이 지날수록 Android 파트의 목을 조르듯이 점점 유입되는 횟수가 늘어만 갔습니다. 그런데 어느 날, 다른 팀의 분께서저 재현되는데요라는 한 줄기의 빛과 같은 언급을 해주셨습니다.믿고 싶지 않은 일이 현실이 되었다네? 그게 … 정말로 일어났습니다.이제부터가진짜시작역시버그는재현이되어야제대로잡을수있겠죠! 저에게는재현되는 단말이 있어요!Android에서 디버깅을 할 수 있는 다양한 수단이 있습니다. 이번 사례의 경우는Log혹은Dump를 확인해보는 선택지가 있습니다.Log민감한 정보라고 판단되는 부분은 모자이크했습니다.앱 설치 후 광고 SDK가 수집하는 것으로 보이는 Log에는 다양한 항목들이 나열되는 것을 볼 수 있습니다. 이때 설치한 앱의 정보가 SDK를 통해 특정 API로 전송되는 것도 확인할 수 있습니다. 하지만 Log는 Log일 뿐입니다.  Dumpsys이렇게 Log만으로 추적이 어려울 때, 추가적으로 시스템의 상태를 얻어내 디버깅 할 수 있는 방법이 있는데 바로dumpsys입니다. dumpsys는 Android 단말에서 실행되며 시스템 서비스에 대한 다양한 정보를 제공하는 도구입니다. ADB(Android Debug Bridge)를 사용하여 dumpsys를 호출 시 해당 단말에서 실행 중인 모든 시스템 서비스에 대한 정보를 가져올 수 있습니다. 간단하게 말하면 배터리의 잔량, 메모리 소비량, 네트워크 통신 상태 등을 명령어로 확인할 수 있습니다. dumpsys의 기능에 대해서는 방대한 설명이 필요하므로, 자세한 내용은 아래 링크로 대체합니다.  Android Developers ~ dumpsyshttps://android.googlesource.com/platform/frameworks/native/+/master/cmds/dumpsys/dumpsys.cppActivity DumpDumpsys 에서 좀 더 Activity 와 관련된 정보를 얻기 위해서는 아래의 명령어를 적용해볼 수 있습니다.// Activity Log Dump adb shell dumpsys activity activities 결과를 확인해봅니다. 아래와 같은 Activity 의 활동 이력을 얻을 수 있습니다.Activity Dump에 나타난mCallingPackage값으로 야놀자 앱을 시작시킨 앱의 패키지를 확인할 수 있습니다. 해당 패키지를 실제 Play Store에서 확인해본 결과, 사진 보정 필터앱으로 유명한카메라 앱중 하나였습니다.???? 야놀자와는 전혀 연관성이 없는 앱인데, 호출하고 있네요… ????Process ID// 애플리케이션의 Process ID 취득 adb shell ps Activity Dump에서 확인한mCallingUid는u0a423였는데, 이는 Activity를 호출한 uid 값을 가리킵니다. 실제로 Process 가 호출되는 Application ID도 카메라 앱에서 호출한 ID 정보와 일치합니다.대상 앱 자료 분석단순하게는 APK 를 분석하여 추측하는 방법이 있습니다. Android Studio 에서 제공되는Analyze APK기능을 이용하여 해당 앱에서 사용되는 서비스의 정보를 파악할 수 있습니다. 이 방법을 이용하여 문제의 앱이 사용하는 광고 SDK 서비스에서 패키지 설치/제거 관련 Broadcast Receiver를 수집하는 것을 확인 할 수 있습니다.패키지 관련 Broadcast인android.intent.action.PACKAGE_ADDED, android.intent.action.PACKAGE_REMOVED를 앱이 사용하는 것은 잘못된 것이 아닙니다. 예를 들어 런처 앱의 경우 단말기 내부의 앱 정보가 변경되었다는 이벤트를 이용하여 화면 렌더링 및 동작을 변경하는 처리를 할 수 있습니다 해당 광고 SDK의 경우에는 앱을 설치 및 실행하는 것으로 사용자에게 포인트 및 여러 혜택을 제공할 것이라고 예상할 수 있습니다.개인적인 의견으로는 사용자의 액션과 상관없이 동작하는 부분에 대해서는 분명히 Android 의 개선도 필요하다고 생각됩니다. 이런 정상 동작과 어뷰징은 아슬아슬한 경계에 있지만, 자칫 어뷰징으로 이어지는 경우 서비스의 품질이 떨어지게 되면서 사용자와 개발사 모두에게 좋지 않은 경험을 줄 뿐입니다.설마 이것도 되려나?동일 패키지명이번 포스팅을 작성하게 된 카메라 앱과 야놀자 서비스 사이에 특별한 관계가 없다면, 왜 이런 현상이 발생하는지 고민해봤습니다. SDK도 연결하지 않았다면, 앱을 추적할 수 있는 유일한 키는패키지명이지 않을까라는 생각으로 패키지명만 야놀자 앱과 동일한 샘플 앱으로 테스트해봤습니다.동일 재현 성공!!그럼… 해결… 끝?많은 사람들에게 이름이 널리 알려진 여러 서비스에서조차 이번 포스팅에서 다룬 내용과 같은 현상이 발생하고 있습니다. 발생 유무에 따른 차이점이나 현상의 인과 관계를 명확히 판단하기엔 아직 정보가 많이 부족합니다. 그리고 이번 분석에서 발견한 문제의 앱을 비롯하여 또 다른 제2, 제3의 앱들이 등장할 거란 가능성도 배제할 수 없는것이 현재 상황입니다. 슬프게도 아직 이 현상은 지금도 계속되고 있으며, 불편을 호소하는 리뷰가 등록되어 서비스 전체의 이미지와 평점을 갉아먹고 있습니다. 안드로이드 생태계가 사용자 및 서비스 제공자에게 더 유익한 방향으로 나아갔으면 하는 바람을 담아 작성했습니다.도움 주신 분동일 증상을 발견하고, 단말을 빌려주신 R&D SF팀 전호숙님같이 추적해주신 R&D CX 서비스실 유관종님Dump/Log 관련 조언을 주신 Wind River의 차영호님 (????????????)국어가 많이 부족한 저를 도와주신 리뷰어 ???????????? R&D CX 서비스실 강미경님, 송요창님, 유관종님, 유용우님, 이미혜님이번 현상 추적에 도움을 주신 분들에게 감사함을 전합니다.#야놀자 #개발자 #개발팀 #문제해결 #버그수정 #안드로이드 #인사이트 #경험공유

기업문화 엿볼 때, 더팀스

로그인

/