스토리 홈

인터뷰

피드

뉴스

조회수 1267

국민간식 '치킨'이 태어나기까지

야식의 대명사, '치킨'우리나라 국민이가장 좋아하는 간식은?최근 <배달의 민족>에서 ‘치믈리에 자격시험’을 개최했습니다. 500명의 도전자 중 총 118명의 치믈리에가 탄생했는데요. 이처럼 치킨 감별사를 선정하는 시험이 있을 정도로, 우리나라 사람은 치킨을 참 좋아합니다. 그런데 ‘닭’은 아주 오래전부터 한국인이 즐겨 먹던 음식이었다는 사실. 알고 계셨나요?조선시대에 약용으로 활용된 닭서기 280년 무렵을 묘사한 중국 <삼국지 동이전>에 ‘마한에 긴 꼬리 닭이 있다.’는 기록이 있었다고 하니, 오래전부터 닭과 함께 했다고 봐야겠지요. 조선시대에 발간했던 <식료찬요>나 <동의보감>을 봐도 닭고기를 식용뿐만 아니라 약용으로 활용한 사례가 있습니다. 닭이 소고기 가격에 육박한 시절도 있었는데요. 한국계육산업발전사 등에 따르면 1930년대  닭 한 마리의 가격은 2원으로 당시 소고기 2.4㎏의 가격과 비슷한 수준이었다고 합니다. 대량 사육 시설이 도입되기 이전인 1950년대까지만 해도 농가에서 닭을 기르는 것은 계란이나 퇴비 등을 얻기 위한 ‘부업 축산’ 개념이 강했습니다. 가격이 비싸다 보니 적은 양으로 여러 명이 나눠 먹을 수 있는 백숙이 대세이기도 했고요. 그러다 1960년대 경제개발 5개년 계획의 일환으로 빨리 자라는 식용 육계가 보급되면서 닭고기가 대량 생산되고 가격도 내려갑니다. 요즘도 길에서 심심치 않게 볼 수 있는 전기구이 통닭전기구이 통닭도 이때 처음으로 등장했다고 합니다. 하지만 당시만 해도 현재의 ‘치느님’은 아니었습니다.한국인이 본격적으로 ‘치느님’을 맞이하게 된 건 1970년대였습니다. 당시 식용유가 출시되면서 ‘튀김 통닭’이 탄생하게 된 것인데요. 일명 ‘후라이드 치킨’은 재래시장 닭집을 중심으로 일상으로 퍼져나갔고, 고소하고 바삭한 식감과 담백하고 짭짤한 맛은 남녀노소 누구나 좋아하는 메뉴로 자리 잡게 됐습니다. 1977년 ‘림스 치킨’은 튀김 통닭을 프랜차이즈 형태로 국내에 처음 도입하여 본격적으로 ‘치킨’의 시대를 열기도 했는데요.무려, 뉴욕 국제 발명전 금상(?)의 영예를 안았네요이후 양념치킨, 간장치킨, 오븐에 구운 치킨, 치즈, 과일을 입힌 치킨 등 현재 다양한 맛을 내는 치킨들이 탄생하며, ‘국민 간식’의 대명사가 되었습니다. ‘세상에서 가장 완벽한 음식’, ‘나 이외의 다른 음식을 먹지 말라’로 시작하는 십계명까지 생길 정도로 인기를 얻으며, 지난해 1인당 연간 20마리, 14kg의 닭고기를 소비하고 있다고 합니다. 한 달에 한 번 이상은 꼭 먹는 셈입니다. 한국인들의 공식 ‘치느님’ 축제인 삼복더위는 지났지만, 치킨이 어디 특정한 날에만 먹는 음식인가요?그래서 준비했습니다.[광고!]이번에 8퍼센트가 선보이는 투자 상품은 육계 2차 가공 기업 <모돈 상사>입니다. 육계 2차 가공은, ‘ 축산물 위생관리법 시행규칙 제2조의 규정에 따라 도살·처리한 닭을 분할·절단한 분할육과 추가 가공육을 생산하는 공정’을 의미하는데요, 쉽게 말해 기름에 튀기기 이전의 닭고기를 가공하는 기업입니다.<모돈 상사>의 경우 대형 유통업체와 납품계약이 성사됨에 따라 자가 공장을 매입하여 생산시설을 증설했습니다. 이는 시장의 수요에 부응하기 위해 생산량을 기존보다 늘리기 위한 활동의 일환입니다.이번 투자 상품이 제시하는 수익률은 11.05%이며 투자자께는 <모돈 상사>에서 감사의 마음을 담아서 준비한 ‘모돈 통다리 바베큐(2kg)’를 리워드로 드릴 예정(투자 금액별 증정)입니다.수익과 함께 치킨까지 드시는 투자, 모돈 상사가 궁금하시다면?  아래 링크를 클릭해주세요.:)<모돈 상사> 투자 정보 알아보기맛있는 투자의 시작!#8퍼센트 #에잇퍼센트 #P2P #P2P금융 #치킨 #투자상품
조회수 166

이런 디자이너도 있다

저는 그림을 그려서 대학에 갔고, 학교에 가서는 사진을 찍었고, 나와서는 디자인을 하고 있습니다. 2013년에 회사를 만들었으니 올해 벌써 6년 차가 되었네요.(믿을 수 없...) 그러나 저는 아직도 제가 사업을 할 수 있는 사람이 맞는가 라는 고민을 종종하곤 합니다. 아직도 잘 팔리는 것보다 더 의미 있는 것을 만들고 싶어 하고, 돈이 된다는 것보다 재밌는 것, 하고 싶은 것을 만들고 싶어 하기 때문입니다. 그런 주제에 어떻게 겁도 없이 사업자를 낸 걸까요? 이렇게 힘들줄 몰랐지..나만의 브랜드를 갖고 싶었습니다.나의 철학을 담은, 그래서 나밖에 만들 수 없는, 아무도 만들지 않은 것을 만들고 싶었습니다. 앞으로도 저는 그렇게 세상에 없는 것을 만들어내는 지속적인 생산자로 살고 싶습니다. 스무 살 언저리부터 사람들의 마음을 움직이는 것에 대해 관심이 많았습니다. 보이지 않는 음악을 눈에 보이게 만드는 앨범 재킷 디자이너의 인터뷰를 보고 나도 디자이너가 되고 싶다고 엄마를 졸라서 고등학교 때 뒤늦게 미술을 시작했지만, 순수미술을 전공하면 더 풍부한 디자이너가 될 수 있을 거란 생각으로 디자인이 아닌 순수미술 전공을 택했습니다. 그렇게 첫 학교 서양화과에 입학했으나, 고등학교 때부터 꿈꿔왔던 학교에 재도전하기로 마음먹고, 학교를 다니면서 포트폴리오 작업을 준비해서 다시 입시를 봤고 결국 합격하고 맙니다. 어린 저는 그 학교에만 가면 내 인생이 달라질 거라고 믿었습니다. 포트폴리오로 제출했던 자화상1 / Copyrightⓒ 이남희 All Rights Reserved포트폴리오로 제출했던 자화상2 / Copyrightⓒ 이남희 All Rights Reserved출처 : 한국예술종합학교 홈페이지미대는 그림을 잘 그리는 것을 가르치는 곳이 아닙니다. 자신의 생각을 그림이라는 도구를 통해서 표현하는 곳입니다. 내가 보는 세상은 어떤 모습인지, 내가 세상에 대해 하고 싶은 말은 무엇인지를 끝도 없이 고민할수록 더 미궁 속으로 빠져들어갔습니다. 나는 미술이 아직 뭔지 잘 모르겠는데, 지금 내가 무언가를 만든다면 그것이 쓰레기가 다를 바 없는 것은 아닐지 두려워졌기 때문입니다. 나는 사람들에게 감동을 주는 사람이 되고 싶은데, 작업을 하면 할수록 갤러리는 사람들과 거리가 너무 멀고, 내가 생각하는 미술과 사람들 사이에 간극은 너무나 넓게 느껴졌습니다.대체 이 간극은어떻게 메울 수 있는 것일까?미술로 사람들의 마음을 움직일 수 없다면, 다른 방법을 찾아야겠다고 생각했습니다. 생각의 생각의 끝에 사람들의 마음을 이해하는 정신과 의사가 되고 싶다는 생각을 하게 되었지요. 그러나 저는 수포자였기 때문에, 의대에 갈 자신은 없었습니다.(맴찢....) 그렇다고 포기하진 않고, 그냥 무작정 부딪혀보기로 했습니다. 휴학을 하고 정신병원에 전화해서 미술치료 봉사를 하겠다고 하니 다들 흔쾌히 오라고 하시더군요. 그렇게 정신병원에 미술치료 봉사를 하러 다니고, 아로마테라피를 배우겠다며 생판 모르는 제주도 허브농장에 찾아가서 허브를 뜯는 등 무모하다 싶을 정도로 다른 길을 찾아 헤맸습니다. 그렇게 한참을 헤매다가 책을 보고 조언을 얻고자 무작정 찾아갔던 정신과 선생님께서 대체의학을 하느니 차라리 의사가 되라는 말씀을 하시더군요. 그 이야기를 듣자 오히려 의사가 아닌 지금 내가 할 수 있는 미술로 세상을 변화시키는 걸 보여주고 싶다는 오기가 생겼습니다. 그래서 다시 학교로 돌아오게 됩니다.나를 키운 것의 8할은오기... 였다...학교에 돌아오자마자 했던 것은 바로 인터뷰였습니다. 교수님들을 찾아다니며 물었습니다. 그때 제 기억에 가장 남았던 답변은 바로 이 것이었습니다.  "선생님은 미술이 뭐라고 생각하세요?""나는 불만의 표출이라고 생각한다." 그 이야기를 듣자마자, "나는 불만에 가득 차 있으니 이걸 표현만 하면 되겠구나!" 생각했습니다. 그리고 그 당시 저를 가장 괴롭게 했던 못생긴 도시 건축물을 비판하고자 도시 사진을 찍기 시작했습니다. 건물을 찍겠다고 4-5시간을 하염없이 걸어 다니는 것은 기본, 아무 건물이나 들어가서 옥상에 올라가게 해달라고 부탁하다 쫓겨난 것도 여러 번이었지만 그래도 뿌듯했습니다. 드디어 표현하고 싶은 것이 생겼으니까요. Copyrightⓒ 이남희 All Rights ReservedCopyrightⓒ 이남희 All Rights Reserved그렇게 열심히 작업을 하던 저는 다시 위기에 봉착하게 되었습니다. 제가 처음 의도했던 것과 다르게, 사람들이 제가 찍은 건물 사진을 보면서 예쁘다고 하는 겁니다. 제 눈에 흉하게 보이는 건물들을 찍은 사진들을 보면 다른 이들도 제 마음을 이해해주리라 믿었는데, 저의 의도와 다른 사람들의 반응에 저는 당황하게 되었고, 결국 제가 찍은 사진을 설명하지 못하는 아이러니에 빠져 졸업심사를 탈락하고 말았습니다. 그 깟 졸업장 따위!!졸업심사를 통과하지 못하면 졸업이 안 되는 학교 방침에 따라, 졸업장 따위에 연연하지 않겠다며 학교를 박차고 나왔습니다. 그리고 지금 제가 스트레스컴퍼니를 할 수 있도록 분노를 제공해주신 독불장군 같았던 사장님 밑에서 폰트 디자인을 배우면서 사회생활을 시작하게 됩니다. 그렇게 5년간 11,172자의 한글을 만드는 일에 매진하면서 양은 냄비처럼 일희일비하던 제가 엉덩이로 발현되는 인내심이란 걸 배우게 되었습니다. 예술학도에서 직장인이 되어보니 세상을 보는 관점이 달라지게 되더군요. 학교 다닐 때는 이해할 수 없었던 지저분한 간판들, 왜 저렇게 지었는지 모를 못생긴 건물들, 다 없어져 버렸으면 좋겠다고 말했던 그것들 속에서 매일 출근하고 퇴근하는 삶을 살다 보니 내가 그동안 껍데기만 보고 있었다는 사실을 깨달았습니다. 건물은 껍데기가 아니라 사람들이 삶을 살아가는 공간이기 때문입니다. 그제야 못생긴 건물을 찍었음에도 불구하고 왜 내 사진이 예뻐 보였는지 이해할 수 있게 되었습니다. 덕분에 저는 같은 사진 속에서도 다른 이야기를 꺼낼 수 있게 되었고, 건물 속 사람들의 삶의 흔적 덕분에 그 건물들이 아름답다는 것을 사진으로 표현해내었습니다. 그렇게 저는 8년 만에 졸업장을 받았습니다.축졸 업졸업만 하면 인생이 달라질 줄 알았습니다. 그러나 인생은 퀘스트를 하나씩 깨는 것과 같아서, 하나가 끝났다 싶었더니 또 다른 문제가 제 눈앞에 나타나더군요. 그래서 이제는 "이 것만 하면, 행복해질 거야. 저 것만 이루면 인생이 달라질거야"라는 말을 믿지 않습니다. 그냥 한 발짝 한 발짝을 꾸준히 가는 겁니다. 우여곡절을 거쳐 졸업을 하고 나니 서른이 코앞이었습니다. 스물아홉. 아홉수였을까요.. 저는 제2의 사춘기에 빠져 디자인이 정말 내가 하고 싶은 일이 맞는가에 대해서 다시 고민을 하게 됩니다. 그렇게 꼬박 1년을 고민하고 서른이 되는 해에 퇴사를 했습니다. 그리고 저는 학생 때 갖고 있었던 열정을 되찾고자 공부를 시작하겠다는 결심을 했고 대출을 받아 아시아 크리에이티브 아카데미라는 곳에 등록하고 한, 중, 일 크리에이터분들께 디자인 수업을 들으며 바닥까지 떨어졌던 자신감을 끌어올리게 되었습니다.사회적기업 노리단 공연팀의 공연 모습그 후, 하고 싶은 것으로 세상을 바꾸는 사회적 기업 노리단에 사회디자인팀 디자이너로 입사하여 재활용 교구로 만드는 교육 프로그램을 기획 디자인하였으며, 전통시장 활성화 사업 총괄 코디네이터로 일하며 소셜 마인드를 불태웠습니다. 소셜 섹터에 발을 딛으면서, 이런 세상도 있었구나 신기해하기도 했고, 기대와는 다른 모습에 실망도 했었지만 이곳이 아니라면 만날 수 없을 것 같았던 좋은 사람들을 만났고, 그들과 함께 일했던 기억은 아직도 뿌듯하게 남아있습니다. 시장 상인회 사무실에서 매일 야근하면서 피곤할 때마다 팀원들이랑 어떤 상품을 만들면 스트레스를 풀 수 있을까 즐겁게 고민했던 기억이 나네요. 처음 회사를 구상하면서 사회적 기업으로 만들고 싶다는 생각을 막연히 했었습니다. 같이 고민해주던 친구가 임신을 하고 회사를 그만두는 것을 보고 나중에 경력단절 여성들과 함께 함께 회사를 만들 수 있으면 좋겠다고 생각했었지요. 그래서 굳이 분노 캔들을 노동집약적인 수공 캔들로 만들고 이 캔들이 잘 팔리면 경력단절 여성들과 함께 일해야겠다는 꿈을 가졌으나, 그만큼 팔려주지 않더군요... 팔리지 않는 캔들을 보며, 나만 좋아하는 걸 만들었나 하며 자책하고 이 일을 계속해도 되는 것일까 고민하던 적이 있었습니다. 다른 사람들의 얘기를 들을 때마다 귀가 팔랑거려서 이래야 하나 저래야 하나 끝도 없이 고민하던 적도 있었습니다. 그러나 그 고민들을 거치고 나니 조금 더 단단해짐을 느낍니다. 그리고 제가 이 길을 놓지 않고 계속 걸어가기만 한다면, 분명히 길이 있다는 것 또한 알게 되었습니다. 누가 뭐라고 하더라도 지속할 수 있을 만큼 좋아하는 일들을, 가장 잘하는 방법으로 즐겁게 해나가는 것입니다.정부에서 연구한 자료에 따르면 스트레스로 인한 수도권의 사회적 비용이 연간 37.5조 원이나 된다고 합니다. 또한 우리나라 사람들의 일상생활 스트레스와 직무 스트레스 수준이 OECD 국가 중 최고 수준이며 미국이나 일본과 비교해 9%나 높은 수치라고 합니다. 그래서 다들 스트레스라는 말을 입에 달고 사는 것이겠지요. 저 또한 그와 같은 사람 중에 하나이기 때문에 그 고통을 너무나 잘 압니다. 그런 저의 성격을 자책하고 한탄했던 적도 많았지만, 이제는 그렇게 생각하지 않습니다. 제가 이렇게 예민하지 않았다면, 스트레스컴퍼니를 만들지도 못했을 것이고 또 지금까지 지속하지도 못했을 것입니다. 태생이 극단적이고 예민한 인간이기에, 피할 수 없다면 그 재능을 십분 발휘하고자 합니다. 그래서 저처럼 예민한 사람들도 자신의 단점을 자책하기보다 장점을 자랑스러워하면서 살아가기를 원합니다. 앞으로의 저의 미래도 그리고 이 글을 읽으시는 여러분들의 미래에도 좋은 일만 있기를 바래봅니다. 스트레스컴퍼니의 모든 상품은 스트레스컴퍼니샵에서 구매 가능합니다.강연 문의는 my@stresscompany.net으로 보내주세요. ⓒ스트레스컴퍼니 - 무단 전재-재배포 금지#스트레스컴퍼니 #심리스타트업 #스트레스관리 #서비스소개 #제품소개
조회수 1714

Golang 체험기

AWS EC2 태그를 Kubernetes Label로 뽑아주는 Vungle/Labelgun에 문제가 많아서 이번에 대대적인 수술을 하였다. 하루에 수백번씩 Pod가 죽는 통에 도저히 참을 수가 없었다. 아무튼 이와 관련한 이야기는 다른 글에서 썰을 풀고 여기서는 Go에 초점을 맞추고 경험담을 늘어놓아볼까 한다.장점기술 탐색 — golang이란 글에서는 주로 부정적인 견해를 보였지만 최근에는 생각이 바뀌었다. 무엇보다 Docker와 같은 컨테이너 기반 서비스에는 Golang과 같은 언어가 Java 또는 Python 같은 언어보다 분명 장점이 있다. 미리 빌드한 바이너리 파일만 컨테이너에 넣으면 되기 때문에 가볍다. Java Runtime을 컨테이너에 넣을 때보다 월등히 가볍다. 여기서 가볍다 함은 컴퓨팅 리소스 측면, 컨테이너 빌드 구성의 용이함 모두를 뜻한다. 물론 전통적인 C/C++ 환경도 비슷하지 않냐라고 의문을 품는 사람도 있겠지만 Golang은 goroutine등으로 동시성 제어를 런타임 시스템이 알아서 제어해주기 때문에 언제든 머신을 갈아치울 수 있는 클라우드 환경에 훨씬 적합하다. 그 외에도 현대적인 언어의 여러 장점을 누릴 수 있는데 이는 다른 글이 훨씬 잘 설명해놓았기에 자세한 언급은 하지 않으려 한다.GOPATH 를 처음 여행하는 GOPHER 들을 위한 GOLANG 안내서단점Application Performance Monitoring을 구축하기가 생각보다 어렵다. New Relic과 DataDog Trace 모두 개발자가 코드를 상당량 추가해줘야 한다. 보통 에이전트만 붙이면 알아서 잘 작동하는 Java APM에 비해 상당히 과거의 방식이다.func saveFile(ctx context.Context, path string, r io.Reader) error { // Start a new span that is the child of the span stored in the context. If the span // has no context, it will return an empty one. span := tracer.NewChildSpanFromContext("filestore.saveFile", ctx) defer span.Finish() // save the file contents. file, err := os.Create(path) if err != nil { span.SetError(err) return err } defer file.Close() _, err = io.Copy(file, r) span.SetError(err) return err }소스코드를 바이너리 코드로 컴파일하기 때문에 빌드 및 테스트 피드백 주기가 길다. C++을 한참 다루던 시절로 돌아간 느낌이다. 한마디로 답답하다.게다가 npm과 같은 패키지 관리 시스템이 없고 Git과 같은 소스버전관리시스템을 바로 접근해 사용하기 때문에 초기 빌드가 엄청나게 느리다. Git clone 보다는 이미 잘 패키징된 파일 몇 개를 다운로드 받는 쪽이 월등히 빠를 수밖에 없지 않나?패키지 관리 시스템과 더불어 빌드와 관련해 그 존재가 매우 의심쩍은 게 하나 있으니 바로 GOPATH이다. Python의 virtualenv처럼 프로젝트별로 완전히 고립된 개발환경을 갖추면 여러 모로 장점이 많은데 왜 이런 환경변수가 존재해야 하는가? 왜? 대체 왜?마지막으로 한가지 더. Go는 goroutine 등으로 병렬작업을 지원하여 분명 편하다. 하지만 순수한 함수형 언어가 아니고 Immutable한 데이터를 메시지 패싱하는 방식이 아니기 때문에 애먹는 부분이 많다. goroutine과 channel을 장점으로 내세우는만큼 최소한 표준 라이브러리는 동시성을 최대한 고려해서 설계했을 법한데 그렇지 않은 부분이 많아서 당혹스러웠다. 물론 이러한 설계는 그만한 장점이 있지만 한동안 유행하던 다수의 언어와는 방향이 달라서 다소 적응하기 힘들었다.#데일리 #데일리호텔 #개발 #개발자 #개발팀 #스킬스택 #기술스택 #스택도입기 #후기 #golang
조회수 1295

<나의 첫 번째 울릉살이>참여자 모집

신비로운 섬 울릉에서 '나를 기록한다'는,그 단순한 행위에 집중해보는 건 어떨까요?1. 참여대상- 울릉에 머물며 '나'와 '섬'을 자유롭게 기록하고 싶은 청년2. 주요일정- 설명회 (18.07.26 목요일 저녁 7시 30분, 서울 영등포구 영신로 183 서울하우징랩)* 울릉살이에 대한 궁금증과 기대를 함께 나누는 시간- 최소한의 준비 (18.08.09-10 @ 서울)*최종 참여자들이 함께 모여, 울릉살이를 위한 몸과 마음의 준비를 하는 시간- 울릉살이 (18.08.18-09.01 @울릉)*내가 머무는 시공간과 기록하는 행위에 집중하는 시간- 정리하기 (18.09.01-09.02 @울릉 or 포항)*섬을 떠나기 전 지난 울릉살이를 함께 되돌아보는 시간  3. 참여자 혜택- 숙소 및 왕복 선박비 지원, 드로잉 워크숍 등 각종 문화활동 참여 가능4. 비용- 울릉살이 경비 (식비, 교통비 등)*최소한의 소정의 참가비가 있을 수 있으며, 최종 참여자분들께 추후 자세히 안내 예정다시 한번 고민해주세요.<나의 첫 번째 울릉살이>는 단순히 함께 떠나는 여행이 아니에요. 완벽하게 제공되는 체험 프로그램도 아니에요. 울릉에 머물며 기록하는 그 단순한 행위에 집중합니다.불편한 것들이 많을 거에요. 낯선 환경에서 보내는 시간, 새로운 사람들과 마주하는 시간, 고독에 마주해보는 시간, 그 모든 것들이 힘들고 불편할 수 있어요. 하지만 그럼에도 불구하고, 울릉에 나를 비춰보며, 글이든, 그림이든, 사진이든, 내가 원하는 도구로 내가 만나고 겪는 나, 내가 머무르는 장소, 그 모든 것을 솔직하게 기록해보는 것. 그것이 <나의 첫 번째 울릉살이>가 당신에게 제안하는 유일한 것이자 모든 것입니다. 불편함을 있는 그대로 인정하고 울릉이라는 섬이 가진 원시성에 집중하다보면, 그 어떤 곳에서보다 자연스러운 나와 더 가깝게 마주할 수 있을 거에요. <나의 첫 번째 울릉살이>가 추구하는 네 가지 가치  1. 자기중심적일 것. 타인의 경험에 의존하기보다, 나만의 욕망에 기준해서 자기 중심적인 시간이 되었으면 좋겠어요. 프로그램을 쫓아다니지 않는, 각자가 주인공이 되었으면 좋겠어요. 2. 간섭하지 않고 관계할 것. 서로가 각자의 욕망에 집중하되, 함께 연대하면 좋겠습니다. 함께 하면서도 온전히 혼자일 수 있도록, 개인 간 안전거리를 존중하면 좋겠습니다. 3. 기대와 환상을 갖지 않을 것. "어디까지 가봤니?"라는 질문에 매몰되지 않았으면 좋겠어요. 비가 오면 오는대로, 날이 더우면 더운대로, 내가 보내는 시간에 정직하고, 내가 머무르는 공간에 충실하면 어떨까요? 4. 솔직하게 기록할 것. 기록은 내가 내 행위를 존중하는 가장 좋은 방법입니다. 뛰어나게 잘 기록할 이유도 없고, 인정받아야할 필요도 없이, 그저 내가 마주한 세계를 생생하게 겪어가며 솔직하게 기록하면 좋겠어요. 글이든 그림이든 사진이든 무엇이든 좋습니다. 내가 만나고 겪는 나, 내가 머무르는 공간, 그 모든 것을 기록했으면 합니다. 그럼에도 불구하고, <나의 첫 번째 울릉살이>를 시작하려는 당신에게고맙습니다. 환영합니다. <나의 첫 번째 울릉살이> 초대장을 보낼게요.<나의 첫 번째 울릉살이> 참여 신청 (~18.08.02 목요일까지)<나의 첫 번째 울릉살이> 설명회 참여 신청 ('18.07.26 목요일 저녁 7시 30분) #로모 #기업문화 #조직문화 #사내문화 #기업소개
조회수 1611

SW '인력난', 인도의 IT 인재로 해결?

한국의 소프트웨어 업계의 고급인력 부족 문제와 SW 개발자의 중소기업 기피 현상을 해소하기 위해서 SW강국인 인도 인력을 활용하는 방안이 논의되었다는 이야기가 있으며, '인도 SW 전문인력 활용 파트너십 프로그램'을 운용하기 위한 참가업체를 모집한다는 내용이 발표되었다.이런 프로젝트가 가능하다고 한 것은 한국 SW산업협회가 지난 9일에 발표한 'SW 직종별 인력수급실태조사'에서 국내 SW기업 551개 중 53.2%가 인력 확보에 어려움을 겪고 있다는 이야기 때문이라고 한다.특히나, 대기업은 그나마 수월한데, 중소. 중견기업은 SW인력 채용에 상당한 어려움이 있다는 식으로 결론이 지어진 것으로 보인다.슬프지만, 이런 결론으로 이야기가 진행된 것에 대해서 몇 마디 안 할 수 없다.첫째. 임금과 복지체계가 잘 갖춰진 대기업이 아니고서는 인도의 업체들과 소통할 방법도 없을 것이다.둘째. 임금이 적정 수준이 아니라면, 인도의 업체들에게 비용 지불할 엄두도 못 낼 것이다.셋째. 임금이 맞는다고 하더라도, 국내의 관행상 SI업체는 활용이 불가능할 것이다. 그 비용으로 인도 개발자가 한국에 와서 체류할 가능성이 없다.넷째. 그나마, 임금도 맞고, 체류가 가능하거나 원격 업무가 가능하다고 하더라도, 적절한 임금도 주지 못할 비즈니스 모델을 갖춘 중소기업의 체질상 그들과 업무 공조를 하기 위한 프로세스나, 방법론, 품질 체계가 있을 리 만무하다.죄송하지만, 한국적인 SI업체나 개발 총괄 책임자가 계장이나 과장급에 불과하고, 커리어 매니저 역할을 하는 선배도 없는 기업이라면 인도의 뛰어난 IT인재들과 소통한다는 것 자체가 불가능할 것이다.인도의 IT인재들을 활용할 수 있는 기업의 조건은 다음과 같이 나열할 수 있겠다.하나. 직원들의 업무 효율을 위해서 재택근무 개발을 할 정도의 개발 문화를 가진 소프트웨어 기업둘. 소프트웨어 품질체계에 대한 부서나 업무 체계를 잘 갖추고 있는 소프트웨어 기업셋. 영어도 잘하고, 소프트웨어 코딩 능력도 출중한 개발팀을 잘 세팅하고 있는 소프트웨어 기업넷. 경험이 풍부한 개발 총괄과 능력에 따라 대우받는 인사체계와 문화를 가진 소프트웨어 기업다섯. 적절한 비용으로 괜찮은 수익을 보장받을 수 있는 비즈니스 모델 체계를 가진 소프트웨어 기업그렇습니다.이렇게 나열한 5개 정도의 조건의 기업이라면, 뛰어난 인도의 개발자들과 업무 소통이 가능합니다. 물론, 이런 조건의 소프트웨어 기업은 굳이, 해외의 싼 개발자만을 찾지 않을 정도로 비즈니스 모델 체계와 기업 문화를 갖추고 있어서, 굳이 뛰어난 인도의 개발자를 찾지 않아도 되겠지요.죄송하지만, 한국의 대부분의 소프트웨어 기업들은 인도의 뛰어난 개발자들과 일하기 어려울 것입니다.그리고, 다시 한번 말씀드리지만, 가능한 한국 기업들도 있습니다. 최소한 다음의 조건을 만족시킨다면요...재택근무가 자유로울 정도로 품질체계와 개발문화를 가진 기업은 가능합니다.
조회수 3430

[컬리에서의하루] 꿈의 주방에 사는 여자들 #스타일링팀 편(푸드스타일리스트의 하루)

 요리에 아무리 관심이 없는 사람이라도, ‘나도 요리하고 싶다’ 라는 마음을 들게 해주는 꿈의 주방이 있다. 바로 마켓컬리의 스튜디오! 북유럽 스타일의 넓은 아일랜드 식탁부터 오밀조밀한 식기, 근사한 냄비 세트가 골고루 갖춰진 선반, 상상하는 어떤 요리도 문제 없이 소화해줄 다양한 조리도구와 빈티지부터 모던풍의 커틀러리까지! 누구나 꿈꾸는 꿈의 주방, 그런 꿈의 주방에서 하루하루를 보내는 컬리의 푸드스타일리스트의 하루는 어떨까? 꿈의 주방에 사는 그녀들의 하루 이야기, 지금 만나 보자.market.kurly.com9AM안녕하세요!컬리의 푸드스타일리스트,지원&다인입니다꿈의 주방! 컬리 스튜디오 좀 소개해 주세요(다인) 이곳은 컬리의 상품 사진을 찍는 스튜디오이자 키친인 공간이랍니다. 꿈의 주방이 맞는지는 잘 모르겠지만 ^^ 요리하고 싶어 지는 주방이라고나 할까요?(다인) 주로 촬영 장소로 활용하다 보니 촬영소품으로 활용하기 위한 각종 조리도구부터 식기들이 모여 있어요. 식기 가짓수도 정말 다양하고, 출처 역시 다양하답니다. 컬리의 인스타그램 채널 통해서 식기를 물어 보시는 분들도 종종 있으세요!(지원) 그리고 MD님들께서 신제품을 오픈하기 전 직접 요리도 해보고 팀원들과 나눠 먹는 키친의 역할을 하기도 해요. 점심시간에는 도시락을 싸온 팀원들이 데우거나 새로 요리를 하면서 미식을 즐기는 공간이기도 하고요! 컬리스럽죠? ^^컬리의 푸드스타일리스트 분들의 촬영 당일 아침은 언제 시작되나요?(지원) 컬리의 출근 시간은 아침 10시지만, 촬영 날에는 누끼* 촬영이 오전 중에 진행되기 때문에 누끼 촬영을 담당하시는 분들은 아침 9시에 미리 출근해서 준비를 시작해요.누끼란? 제품을 자세히 보여주기 위한 정보성 사진(다인) 누끼 컷만 보면 간단해 보이지만 사실 쉽지 않은 촬영이거든요. 전날 밤부터 준비를 시작해도 오전에 시간이 부족해요.누끼 촬영이 왜 어렵나요?(다인) 눕혀서 찍어야 하는 상품과 세워서 찍어야 하는 상품을 분리하고, 크기도 고려하고 패키지부터 속까지 모두 상세하게 찍어야 하기 때문에 오전부터 누끼 촬영을 진행하다 보면 점심도 거르고 촬영을 진행할 때도 많아요, 흑흑.(지원) 그래도 간혹 촬영하느라 조리한 음식들을 촬영이 끝나면 먹기도 해요! 소소한 재미들? ^^컬리의 누끼 촬영 컷촬영을 준비하기 위해 어떤 과정들이 있나요?(다인) 촬영 품목이 정해지면 어떤 식으로 촬영할 지에 대한 시안작업을 진행하고, 관련 팀원들이 모여 함께 의견을 나눠요. ‘어떻게 찍을까, 어떤 컨셉으로 할까, 어떤 이야기로 풀어볼까’ 함께 논의하고 나면 정리된 내용들을 토대로 촬영 소품 준비와 식재료 준비를 시작하죠. (지원) 소품을 준비하는 부분이 가장 시간이 많이 걸리는데요. 컨셉과 가장 가까운 소품들을 준비하기 위해 주말에도 인터넷으로 주문하거나 오프라인을 찾아다녀요. 구체적으로 어떻게 스타일링을 할지 자세하게 구상도 해보고, 디테일 측면에 대해서 계속 머릿속에서 고민하는 것 같아요.  (다인) 맞아요. 서로 자기가 담당한 상품의 촬영 컷에 대해서 고민하면서 소품을 어디서 구할지, 어떻게 준비할지도 구상을 하죠.  (지원) 촬영 3일 전에는 준비가 오래 걸리는 소품을 사러 다녀요. 나무 상판을 사러 가거나, 소품을 대여하러 가거나 하면서 촬영 준비를 몇일 동안 하죠.  (다인) 간혹 톱질을 하기도 하고, 호호호호. 페인트칠도 하면서, 호호호호.톱질이나 페인트칠이요?(다인) 네. 촬영에서 배경이 참 중요한 역할을 맡고 있는데요. 딱 필요로 하는 컬러와 느낌을 연출하는 배경을 구하기는 쉽지가 않아서 자체적으로 상판을 구매해서 직접 만드는 경우도 있어요. 주문한 나무 상판이 너무 길면 톱질도 해서 크기를 맞추기도 해요. 푸드스타일리스트라고 요리만 하고 예쁘게 플레이팅만 할 줄 아셨죠? 하하하하직접 톱질을 할 만큼 배경이 중요한 이유는 무엇인가요?(지원) 저는 사진을 찍을 때 가장 중요한 게 두 가지가 있는데 그게 바로 ‘배경’과 ‘빛’이라고 생각해요. 물론 요리를 얼마나 완성도 있게 하느냐 도 중요하지만 ‘배경’과 ‘빛’의 요소에 따라 느낌과 아우라가 연출이 되기 때문에 전체 촬영에서 척추 같은 역할을 한다고 할까요? 그래서 조금 더 수고스럽고 손이 많이 가더라도 딱 맞는 배경을 찾기 힘들 때는 직접 만들면서까지 촬영을 해요. 또 다양한 컷을 연출하기 위해서는 배경이 다양해야 가능하기 때문에 직접 만드는 경우도 있어요.(다인) 저희가 찍는 상품들이 음식이다 보니 너무 똑같은 배경만 반복되거나 컨셉이 동일하다면 자칫 지겨워질 수도 있잖아요. 그리고 각 음식마다 담고 있는 식탁 위에서의 역할이나 목적, 분위기가 다르기 때문에 제대로 그 음식을 조명해주기 위해서는 톱질도 마다하는 거지요.컷 하나 하나에 대한 정성이 정말 남다른 것 같아요. 컬리의 사진들이 남다를 수 있는 이유는 무엇일까요?(다인) 아무래도 디테일인 것 같아요. 예를 들어 쭉 상품들을 늘어놓고 찍으면 심심하잖아요. 그럼 서로 다르게 높이를 둬서 입체감을 주는데, 높이를 다르게 하는 이유가 ‘허전해서’가 아닌 이 사진 자체에 스토리가 있기 때문에 그 스토리 상의 이유로 높이감을 자연스럽게 연출하려고 노력해요. 그러다보니 구성안 회의 때 그 스토리가 무엇이 될 수 있을까 서로 고민하면서 ‘왜’에 대한 이야기를 만들죠. 결론적으로는 촬영을 진행하기 전 엄청난 고민과, 논의, 그리고 준비가 있기 때문에 디테일이 살아난다는 점?스토리라고 하면 어떤 스토리인가요?(지원) 음, 사진 자체에서 납득이 되는 요소들? ‘사진을 보았을 때 왜 이걸 여기에 놓여져 있는건지’에 대한 이유를 만드는 거죠. (다인) 그냥 아무거나 갖다 놓고 찍을 수 있잖아요. 좀 허전하다 싶으면 대충 아무 국자를 갖다 놓거나 그릇을 갖다 놓고 채울 수도 있는데, 저희는 항상 ‘왜’에 대해서 고민하거든요. 소품 하나하나에 이유를 담기 위해서 스토리를 구상하는 거죠. (지원) 가령 케이크를 촬영하는데 옆이 심심하다고 유리잔을 갖다 놓지 않는 거죠. 케이크를 친구들과 나눠 먹는다고 상상을 했을 때 어떤 연령층의 친구들이 모여 있는 걸까? 누군가의 생일일까? 누군가의 브라이덜 샤워일까? 이들은 어떤 음료를 좋아하는 사람일까? 그럼 그 음료에 어울리는 잔은 무엇일까? 이렇게 고민을 거듭한 끝에 그 상황에 딱 맞는 음료를 결정하고 잔을 선택하고 그 컷에 소품으로 놓여지는 거에요. 그 상황과 이 화면에 맞는 온갖 계산들을 엄청나게 하는 거죠. (다인) 머리도 써야하고, 톱질도 해야하고. 쉽지 않은 직업이죠. 하하하하 (지원) 상황에 대한 이해가 필요하다 보니 촬영 전에 회의를 많이 하고, 대화도 많이 하고, 고민도 많이 하고, 이런 저런 계산들을 엄청나게 하고. 그러한 디테일에 대한 고민들이 컬리룩을 만들게 해주는 힘이죠. 배경 외, 소품 준비는 어떻게 진행되나요?(지원) 고속터미널 지하상가부터 이태원 앤틱거리, 소품샵이나 편집샵 등 다양하게 돌아다니면서 소품을 빌리기도 하고 구매하기도 해요. 얼마전에는 다인님이 영국으로 출장 가서 직접 소품을 구매해오기도 하셨어요.영국이요?(다인) 네, 얼마전에 영국으로 출장을 다녀왔어요. 두가지 이유가 있었는데, 첫번째는 ‘기물 구입’. 한국에서 대여 비용이 영국에서는 구매 비용이어서, 장기적으로 보았을 때는 기물을 구입하기 위해서 다녀왔고요. 두번째는 ‘패키지나 리빙 제품’ 조사차 다녀왔어요. 해외 시장에서의 패키지 디자인 등을 참고하기 위한 목적도 있었고요. 영국이 프랑스보다 작은 규모의 플리마켓 같은 시장이 다양하더라고요. 프랑스는 굵직굵직하게 있다면, 영국은 소소한 곳이 많은 편? 플리마켓부터 백화점까지 꿈의 주방을 채우기 위해 열심히 돌아다녔답니다.(지원) 아무래도 저희는 디테일을 신경쓰다 보니 소품 하나하나가 무척 소중하거든요. 영국에서 가져온 소품들을 보면 작은 커틀러리부터 기계 부품까지 다양해요. 아무래도 여러 상황들을 연출해야 하니까 최대한 다양하게! 그리고 스토리를 담을 수 있는 소품들을 구매했어요.컬리룩을 완성하게 하는 힘은 다름 아닌 ‘디테일’. 사진 하나 하나에 스토리를 담고 이 사진 속 음식을 즐기는 사람들을 상상하고 그들이 사용할 법한 소품을 구상하기까지. 하나의 사진이 완성되는 데에는 수많은 시간과 고민과 노력들이 숨어 있었다.3PM점심식사도 잊은 오후, 지금은 어떤 촬영이 진행되고 있나요?(다인) 곧 오픈 예정인 냉동 무화과 촬영하고 있어요. 급속 냉동 시켜서 맛과 영양이 그대로 살아있는 냉동 무화과를 어떻게 즐기실 수 있을지 소개 드리기 위한 컷을 촬영 준비 중이에요.촬영 직전에 어떤 준비들이 있나요?(다인) 먼저 촬영을 진행하기 전에 준비한 식재료를 1차적으로 플레이팅을 해요. 구성안 회의에서 잡았던 레시피나 맛있게 먹는 팁, 함께 즐기면 좋은 식재료 등을 중심으로 셋팅을 하죠. 그러고 나면 촬영 테이블로 옮겨서 거기서 최종적인 셋팅을 완성하죠. 키친크로스나 커틀러리 등도 사전에 모두 계산해 두었던 소품들이어서 촬영 직전에는 구상해둔 셋팅을 이리저리 놓아보며 최종적으로 자리를 잡아요.그러고 포토님이 촬영해주시면, 최종 결과물을 보며 수정할 부분을 수정하고, 소품을 바꿔야겠다 싶으면 대체하기도 하면서 OK컷을 뽑아내요.냉동 무화과 최종 완성컷식재료를 촬영하다 보면 어려운 부분이 있을 것 같아요.(다인) 음식 촬영은 전날 준비를 많이 하지 못해요. 조리 직전에 자르거나 볶거나 끓이거나 해야 되는 특성 상, 촬영 당일 동시에 많은 것을 진행해야 하는 것이 어렵죠.(지원) 그리고 직접 조리부터 플레이팅까지 해보지 않으면 그 완성이 어떤 그림이 될지 정말 모르잖아요. 최대한 머리속에서 꼼꼼히 상상하고 계산해서 식재료를 준비하고 색감이며 부피감이며 느낌이며 모두 사전에 계산을 완벽히 해야한다는 점?  (다인) 식재료다보니 어려운 점도 있지만 나름 재미난 에피소드도 생겨날 때가 많아요. 특히 생물을 촬영할 때? 생물이라고 하면 랍스터나 킹크랩처럼 컬리에서 소개 드리는 수산품들을 말하는데요. 그런 생물 촬영이 있는 날은 마치 사람 모델처럼 킹크랩이나 랍스터도 촬영을 대기하고 있어요. 살아있는 채로!! 그래서 저희가 재미삼아 이름을 지어 주기도 해요, 하하하하.이름이요??(지원) 크기가 어마어마했던 랍스터는 ‘안토니오’, 킹크랩은 크고 작은 형제가 왔었는데 큰 킹크랩은 ‘세바스찬’, 작은 킹크랩은 ‘산체스’. 문제는 이름을 붙여주니까 애틋해지는 거에요.촬영을 하다 보면 이제 삶기도 해야하고, 조리법을 설명해 드리기 위한 컷을 위해 칼로 찌르기도 해야하는데 차마 그럴 수가 없는 거에요. 그래서 사실 칼을 살짝 걸치기만 하고 촬영을 했답니다. 흑흑7PM퇴근 시간도 잊은 스튜디오 현장. 촬영된 컷은 어떻게 홈페이지로 실려지는 건가요?(다인) 촬영이 끝나면 사진들을 정리하고, 선택된 사진을 디자이너분들께 전달 드리면 디자이너분들과 에디터 분들이 컨텐츠로 만들어 상품 오픈에 맞춰 홈페이지로 올라가요. 정성스럽게 찍은 사진이 홈페이지를 통해 고객님들께 인사드리게 되면 참 뿌듯하고 톱질하던 수고도 잊게 된답니다 ^^촬영이라는 일이 어마어마하군요. 컬리 고객님들께서도 집에서 예쁜 스타일링부터 플레이팅까지 도전해보고 싶으신 분들이 많으실 것 같아요! 그런 분들을 위한 팁이 있다면?(지원) 집에서 할 수 있는 선 중심으로 팁을 드린다면, 우선 ‘밋밋하다’싶으면 천을 한번 깔아보셔도 좋아요. 은은하고 자연스러운 느낌을 연출할 수 있거든요. 그리고 무엇보다도 배경과 빛. 배경과 빛만 잘해도 정말 80% 보장되거든요.  (다인) 빛도 형광등보다는 자연광이 훨씬 느낌을 잘 연출해줘요. 그림자가 져도 자연광에서 그림자 진 것이 더 분위기 있거든요. 창가에 자리만 잘 잡고 음식을 촬영하시는 것만으로도 충분히 훌륭한 사진을 얻으실 수 있답니다. (지원) 디저트의 경우에는 한 입 먹은 듯한 느낌이 사진을 찍으면 예뻐요. 그냥 툭 두지 마시고 한 입 스푼으로 푹 퍼주거나 그릇에 한 조각 옮겨 담아도 좋을 것 같아요!푸드스타일리스트의 일상 사진도 궁금해요~ 일이 아닌 취미로 찍는 사진들은 어떤가요?(다인) 아무래도 제 멋대로..? 하하하하 쑥스럽지만 몇 컷 보여드릴게요!(지원) 자연스럽게 찍는 사진을 좋아하는 것 같아요. 부끄럽네요, 갑자기! 하하하하마지막으로 전하고 싶은 이야기(지원) 다른 상업적 사진들은 인위적으로 사진을 찍고는 하단에 ‘위 이미지는 연출된 이미지입니다.’이런 말을 쓰잖아요. 저희는 정말 거짓없이 고객님께서 받으시는 상품 그대로를 가지고 사진을 찍어요. 더 먹음직스럽게 색소를 타거나, 양을 늘리거나 하지 않아요. 거짓되지 않은 사진을 찍으려고 노력하고 있답니다. (다인) 맞아요. 정보를 그대로 담은 사진을 찍기 위해 열심히 노력하고 있답니다! 그러니 컬리 사진 많이 믿어 주시고 예쁘게 봐주세요 ^^어떤 의미에서 촬영 당일은 전쟁과도 같다. 조리와, 플레이팅과, 촬영이 동시에 진행되다 보니 땀 닦을 시간도, 밥 먹을 시간도, 힘들다는 생각을 할 틈도 없다는 그녀들. 몇 날 몇 일을 소품을 구하기 위해 발품을 팔고, 톱질을 하며 촬영을 준비하고 촬영 당일에는 시간을 잊은 블랙홀 같은 꿈의 주방에서 한 컷 한 컷 정성스레 촬영한다. 포크 하나 정도는 신경 쓰지 않아도 될 법 한데 컬리 사진은 ‘디테일이 생명’이라고 말하는 그녀들. 그런 그녀들이 있기에 컬리의 사진 하나 하나가 생명이 담긴 마냥 생생하고 남다를 수 있는 것이 아닐까? 더욱 노력해서 커머스 사진의 새로운 기준이 되고 싶다 말하는 그녀들. 그녀들의 행보가 더욱 기대된다.#마켓컬리 #팀원소개 #팀원인터뷰 #팀원자랑 #기업문화 #조직문화
조회수 1683

TPS 지표 이해하기

많은 초창기 스타트업들은 성능에 관심이 없습니다. 제품 만들기도 바쁜데 성능이 무슨 의미가 있을까 생각이 들죠. 당장 서비스에 사용자가 몰리면 아마존 오토스케일이 해결해 줄테니까요. 맞습니다. 빠르게 가치를 증명하는 스타트업이라면 서비스 초창기부터 성능에 관심을 가질 필요는 없습니다. 하지만 한달에 아마존 서비스 비용이 천만원이 넘어가기 시작하면 슬슬 우리 서비스가 합리적으로 인프라를 사용하고 있는지 고민하게 됩니다. 인프라 비용의 근거도 만들고 싶어지기 시작하죠. 시스템의 성능 지표를 확인 하고 싶어진다면 지금이 TPS 지표를 보실 때입니다. Whatap Application TPS MetricTPS 계산하기Transaction per second(TPS)는 초당 트랜잭션의 개수입니다. 실제 계산하는 방식은 일정 기간동안 실행된 트랜잭션의 개수를 구하고 다시 1초 구간에 대한 값으로 변경합니다. 와탭의 경우 5초 구간으로 값을 수집하기 때문에 단위시간 동안 집계된 트랜잭션의 수를 5로 나눈 값이 표시됩니다. 위에 그림에 두번째 행을 보시면 5개의 트랜잭션이 실행완료된 것을 볼수 있습니다. 이런 경우 TPS를 구하는 방법은 5 transaction / 5 sec 이므로 결과값은 1 TPS 가 됩니다. (와탭의 TPS 지표는 좀더 복잡하게 계산합니다. 와탭은 챠트의 추세를 보여주기 위해 5초 간격으로 30초 평균 TPS를 보여주고 있습니다.)Saturation Point 와 TPS서비스에 사용자가 지속적으로 늘어나면 어느순간부터 TPS가 더이상 증가하지 않는 상황이 발생합니다. 이렇게 증가하지 않는 지점을 Saturation Point라고 합니다. 위 그림은 서비스의 이상적인 상황입니다. 제대로 튜닝이 되지 않은 서비스는 Saturation Point를 지나면 오히려 TPS가 떨어지기도 합니다. 위 그림을 보면 서비스를 사용자는 300명이 넘어가면 TPS가 고정되면서 상대적으로 트랜잭션의 응답시간이 길어 질것을 예상할 수 있습니다.  좀더 스토리를 만들어 보면 이렇게 이야기를 할 수 있습니다. 위 그림을 보면 동시 접속 사용자가 300명이 넘어가면 TPS는 더이상 올라가지 않으므로 서비스의 정체 시간은 증가하기 시작할 것입니다. 300명의 요청사항에 대한 TPS가 50이라면 해당 요청 사항을 다 처리하는데 6초가 걸린다고 생각할 수 있습니다. 이렇게 TPS와 동시접속자를 미리 선정해봄으로써 서비스의 성능을 상상해 볼 수 있습니다.요점 정리TPS는 초당 트랜잭션의 갯수를 말합니다. TPS는 서비스 성능의 기준이 됩니다.평소 TPS 지표를 체그하세요. TPS를 통해 무슨 요일에 또는 몇시에 최대치가 되는지 확인하세요.  TPS가 더 이상 증가하지 않은 지점을 Saturation Point라고 합니다. Satuartio Point가 넘으면서 사용자가 몰리면 TPS가 고정된 상태에서 응답시간이 길어지게 됩니다.   #와탭랩스 #개발자 #개발팀 #인사이트 #경험공유 #일지
조회수 1375

우리, 단 한번만 볼 수 있어요

스티비의 ‘빈 페이지’ 이미지는 어떻게 만들어질까?11월 10일, 스티비(Stibee)는 베타 테스트를 종료하고 정식버전을 출시했습니다. 새로운 스티비 디자인은 기존 디자인과 어떻게 다를까요?기존에는 빈 페이지, 발송 완료 등 이미지가 필요한 부분에 이모지와 노란 꿀벌 로고를 활용했는데요, 스티비 정식버전에서는 기존의 노란색에서 벗어나 컬러와 이미지를 변경했습니다. 이를 가장 잘 볼 수 있는 페이지가 바로 empty-state, 즉 사용자가 가입한 이후 아직 서비스에서 요구하는 정보를 입력하지 않은 ‘빈 페이지’입니다. 이 페이지는 사용자가 가입한 후에 어떤 행동을 해야하는지를 안내하는 것이 주 목적입니다. 안내에 따라 사용자가 정보를 등록하면 더 이상 만날 수 없지만, 짧게 접하는 시간과 반대로 사용자의 이어지는 행동을 어떻게 유도할지 많이 고민해야 하는 페이지입니다.empty-state에 사용하는 일러스트는 정보가 없음을 나타내는 이미지로, 서로 비슷한 맥락으로 페이지를 설명합니다. 하지만 요구하는 정보가 각각 달라 가장 직관적으로 사용자 행동을 유도하기 위해 많은 것을 덜어냈습니다.그럼, 최종으로 선택된 시안과 탈락된 시안은 어떤 차이가 있을까요? (귀여움 주의)스티비에 가입하면 가장 먼저 할 일은 ‘주소록 등록하기’입니다. 최종 확정된 왼쪽 시안은 사람의 실루엣과 인덱스로 주소록의 형태를 좀 더 명확하게 보여줍니다.주소록을 업로드 했다면 그 다음은 ‘이메일 작성하기’입니다. 최종 선택된 시안은 이메일 콘텐츠 일러스트를 활용한 시안입니다. 오른쪽에 있는 시안은 ‘벌통이 비어있으니 이메일로 벌통을 채워주길 바라’는 뜻으로 만든 일러스트입니다. 벌통 시안은 이렇게 설명하지 않으면 어떤 뜻을 가진 이미지인지 알 수 없는 것이 가장 큰 단점이라, 최종 시안으로 선택될 수 없었습니다.다음은 주소록 세부 항목 중, 수신거부한 수신자 목록 페이지의 empty-state 일러스트입니다. 사람, 리스트 이미지를 활용해 봤지만 수신거부한 수신자 목록 페이지 외에도 다양한 목록이 비어있을 때 활용하기 좋아 왼쪽 일러스트를 최종 시안으로 선택했습니다.주소록에서 사용자를 검색할때 정보가 없는 경우에도 ‘정보 없음’을 일러스트로 보여줍니다. 최종 선택된 시안은 직관적인 이미지로 ‘폴더’와 ‘돋보기’를 사용했습니다. 반면 탈락된 오른쪽 시안은 아무것도 없는 벌집을 돌아다니는 벌 이미지로 이미지를 만들었습니다.#슬로워크 #스티비 #개발 #디자인 #퍼블리싱 #인사이트 #일지
조회수 2708

채널 iOS에 Redux를 적용하게 된 7가지 이유.

친숙한 MVC 패턴개발자라면 누구에게나 친숙한 MVC (모델 - 뷰 - 컨트롤러) 패턴은 꽤 오랜 시간 동안 사용됐고 아직까지 많은 개발자들에게 사랑받고 있는 패턴이다. 그 이유로는 이 패턴이 일단 진입장벽이 낮기도 하지만 코드 재사용성, 동시 개발의 용이성 때문이다. 만약 당신이 초보 iOS 개발자라면 높은 확률로 MVC 패턴을 쓰게될 것인데 그 이유는대부분의 예제 및 튜토리얼이 MVC 패턴을 쓰고 있고iOS의 IDE인 Xcode에서 (Swift 는 예외지만) 클래스를 생성할때 기본으로 이름에 ViewController라고 들어간다.위와 같은 이유로 많은 iOS 개발자에 영향을 주리라 생각된다. (2011년도부터 iOS 세계에 빠진 저자도 사실 iOS에서는 software architectural design pattern으로는 MVC가 넘사벽이라고 생가하고 있었기에) 문제는 상대적으로 복잡도가 높아지거나 코드의 양이 많은 제품의 개발에서는 생산성이나 가독성에 그다지 도움을 주지 못하는 데 있다고 생각한다. 예를 들어, 한 페이지의 복잡도가 높아지면 ViewController 파일 한 개의 코드 라인이 기하급수적으로 증가한다. 또 (코드 관리에 매우 신경을 쓰지 않는 이상) 객체 간의 통신 및 데이터의 통일성이 없어져서 가독성이 떨어지기 쉽고, 기능을 추가할 때 생산성이 점점 떨어지게 된다.왜 MVC 패턴은 이렇게 문제가 생기는걸까라는 질문에서부터 시작해보자.MVC 패턴, 도대체 뭐가 문제인가?!그림 1. 보편적인 MVC 패턴의 구조보편적으로, MVC 패턴의 구조는 위의 그림과 같다. 그림을 간단히 설명하자면:뷰에서 이벤트가 발생하면 컨트롤러에 알린다컨트롤러는 그것을 처리하고 모델에 업데이트를 하라고 전달한다.모델은 업데이트를 하고 컨트롤러에 다시 알린다컨트롤러는 모델이 업데이트되었다는 것을 뷰에 알린다뷰는 모델의 업데이트된 값에 따라 다시 뷰를 그린다그림 1과 위의 설명만 놓고 보면 각각의 역할이 명확하다고 생각한다. 구조가 복잡하지 않기 때문에 초보자들도 쉽게 이해하고 적용 가능하다는 것이 장점이다. 하지만 MVC 패턴은 객체 간에 어떤 방향으로 커뮤니케이션 해야 하는지에 대해서는 강제하지 않기 때문에 파생된 패턴들이 많이 있다. 실제로 구글에서 “MVC pattern”이라고 검색을 하면 위 그림과 다른 MVC 패턴 이미지들을 볼 수 있다. 그 한 가지 예가 밑에 그림 2이다.그림 2. 또 다른 MVC 패턴의 구조그림 2를 보면 그림 1과는 다른 커뮤니케이션 방향을 나타내고 있다. 바꿔 말하면 개발자가 원하면 언제든지 세 가지 구조 안에서 방향을 유동적으로 바꿔 써도 무방하다는 것이 된다 (그것이 원하는 MVC 패턴이든 아니든지 간에). MVC의 변형으로써는 여러 가지가 있지만, 대표적인 것들은 아래의 그림과 같이 MVP, MVVM 같은 것들이 있다.그림 3. MVC, MVP, MVVM 패턴의 비교실제 저자도 MVC 패턴이 커뮤니케이션 방향을 강제하지 않는 것과 관련해 문제를 겪은 경험이 여러 번 있었던 것을 기억한다. 한가지 예를 들어보자.ViewA.swift (뷰)protocol ViewADelegate {       func updateA() }   class ViewA : UIView {        var delegate: ViewADelegate?       //update through protocol      func didClickOnA() {          self.delegate?.updateA()     }      //update through notification     //maybe same kind of update can happen in other views      func didClickOnAA() {         NotificationCenter.default.post(             name: NSNotification.Name(rawValue: “updateFromA”),              object: nil         )     }      func render(_ model: product) {         //update based on model      }  } ViewController.swift (컨트롤러)class ViewController : UIViewController, ViewADelegate {       Var viewA: ViewA?     Var product = Product()     func viewDidLoad() {         self.viewA = ViewA()         self.viewA.delegate = self         // ...         self.view.addSubview(self.viewA)     }      func updateA() {         self.product.update(name: “aa”, version: “123”)         self.viewA.update(self.product)         //re-render viewA     }  } Product.swift (모델)class Product {       var name = “”     var version = “”     init() {         NotificationCenter.default.addObserver(             self,             selector: #selector(self.doSomething),             name: “updateFromA”, object: nil)     }      deinit {         NotificationCenter.default.removeObserver(self)     }      func update(name: String, version: String) {         self.name = name         self.version = version     }      func doSomething() {          //do something…          //notify viewA or any objects through notification     }  } 조금 극단적인 예처럼 보이긴 하지만 실제 개발을 하다 보면 충분히 일어날 수 있는 상황이다. 코드에 대해 간략하게 설명하자면:ViewA에서는 delegate와 notification으로 각각 ViewController와 Product에 이벤트를 날리고 있고ViewController에서는 delegate method를 구현해서 Product를 업데이트 후, 다시 ViewA를 그리라는 로직을 가지고 있다.Product 에서는 객체를 업데이트 할 수 있는 메소드가 있고 notification을 통한 업데이트를 하고 있다.이건 아주 간단한 예이지만 프로젝트가 커진다면 특정 이벤트에 대해 데이터가 업데이트되는 경로가 달라질 수 있다. ViewA -> Product -> SubProduct -> Product -> ViewA 의 경로라던가, ViewA -> Controller -> Product -> SubProduct -> Controller -> ViewA 의 경로 등이 가능하다. 이처럼 특정 이벤트에 대해 여러 가지 체인형식으로 업데이트가 이루어질 경우 그 경로를 일일이 추적하는데 시간이 걸릴 수밖에 없는 구조를 가지고 있는 것을 볼 수 있다.(프로젝트의 크기가 어느정도 커지게 된다면 이렇게 될지도 ㅎㅎ)이런 케이스가 발생하는 근본적인 이유는 결국 MVC 패턴의 장점이라고도 말할 수 있는 유연성과 양방향 커뮤니케이션 때문이다. 이 패턴 자체가 문제가 있는 것은 아니지만 결국 코드는 사람이 작성하는 것이기에 생산성과 가독성을 떨어뜨리는 결과를 초래할 가능성이 높다. 여기에서 우리는 기존 웹 개발에서 쓰이고 있던 Redux 도입을 생각하게 된 것이다.Redux는 무엇인가?Redux 로고Redux는 Facebook의 Flux 를 모태로 삼고 있고 예측 가능한 상태를 자바스크립트 프로그램에서 구현하기 위한 애플리케이션 아키텍쳐이다. Redux는 본래 자바스크립트에서 시작한 오픈소스 프로젝트이지만 다른 개발자들에게 영감을 주었고 2015년 말쯤 iOS 플랫폼에서는 ReSwift(Redux + Swift)가 생겨났다. ReSwift는 결국 Redux랑 크게 다르지 않고 Redux의 세 가지 법칙을 따른다.Single source of truth — 애플리케이션의 전체 상태(State, 또는 데이터)는 트리 형태의 하나의 저장소(Store)로 저장된다.Changes with pure functions — 상태 트리를 변경하는 리듀서(Reducer)는 순수 함수(pure function)이어야한다.Read-only states — 상태는 오직 액션(Action, 어떤 일이 일어날 것인지 설명할 수 있는 객체)으로만 변화가 가능하다.쉽게 말하자면 “Redux는 한 개의 상태 저장소를 가지고 있고 그 안에 있는 데이터만이 신뢰할 수 있으며 저장소의 상태는 오직 순수 함수인 리듀서를 통해서만 변화가 가능하다” 라고 축약 할 수 있다.그림 4 Redux 패턴의 구조위의 그림 4을 보면 충분히 프로그램의 흐름이 어떤 식으로 흐르는지 감이 왔으리라 생각한다.이벤트가 뷰에서 생성되면 그에 해당이 되는 액션을 통해 알린다.액션은 특정 리듀서에서 처리한다.리듀서는 액션에 따라 저장소를 업데이트한다.저장소에 변화가 오면 구독(Subscribe)을 하고 있는 모든 객체에 알린다.이것이 Redux의 커뮤니케이션 사이클이다. Redux만으로도 충분히 여러가지 블로그 주제가 나올 정도로 할 이야기가 많지만 여기까지만 하고, 좀 더 자세한 디테일을 알기 원한다면 옆의 링크를 클릭하시면 된다. :) -> 리덕스 공식 링크Redux vs. MVCMVC와 Redux에 대해 소개를 했으니 간단히 비교해 보자.The Flow — Redux는 데이터 및 애플리케이션의 흐름을 강제한다. 저장소의 변화는 오직 액션을 통해서만 가능하기 때문이다. 이와 다르게 MVC는 강제성이 없기 때문에 여러가지 파생 패턴이 생길 수 있다.Unidirectional flow — Redux에서 흐름은 액션으로만 변화가 일어나기 때문에 오직 한쪽으로만 흐른다. MVC에서는 양방향이 될 수도 있고 한 방향이 될 수도 있지만 보통 양방향이다.Stores — Redux에서는 상태 및 데이터가 하나의 저장소에 있기 때문에 관리하기가 쉬운 반면, MVC에서는 여러 군데에 상태가 분리되어 있기 때문에 동기화에 신경을 써야 한다. (로컬 데이터 스토리지를 쓴다면 문제가 해결되기는 하지만 패턴 이외에 추가적인 노력이 필요함)그 이외에 여러가지 다른 점이 있겠지만, 위의 3가지가 가장 다른 점이라고 저자는 생각한다.채널 데스크 iOS에 Redux를 적용하게 된 이유이제 MVC와 Redux의 차이점을 알게 되셨으리라 생각한다. 우리 팀이 채널 데스크 iOS에 Redux를 적용한 이유를 소개하려고 한다. 아직 모든 부분에 완벽히 적용한 상태는 아니지만 (부분적으로 Notification, Delegate 그리고 Reactive를 쓰고 있다) 그럼에도 Redux를 적용함으로써 얻는 이점이 많다고 느끼고 있다.Explicit data flow — 새로운 개발자가 왔을 때나 여러 명이 작업을 할때 애플리케이션의 전체 흐름을 파악하고 이해하기 쉽다.Unidirectional flow — 데이터 관련 부분을 전부 Redux로 대체하니 모든 데이터 흐름이 한 방향으로 강제되었다. 덕분에 데이터가 어디에서 왔고 어디로 가는지를 파악하기 매우 쉽다.Single storage — 한 곳에서만 데이터를 관리하기 때문에 데이터에 관한 부분은 리듀서만 잘 짜 놓으면 관리하기 쉬워진 점이 있다. Redux를 적용하기 전에 CoreData를 데이터 저장소로 쓰고 있었는데, 어느 시점에 어떻게 저장되는지 눈에 들어오지 않아 불편한 점을 Redux를 사용함으로써 해결할 수 있었다.Immutability and data consistency — 변경 가능한(Mutable) 객체는 보통 iOS 개발에서나 다른 플랫폼 개발에서 장점일수도 있다. 하지만 데이터의 일관성이 깨지기 쉽다. 만약 A에서의 데이터와 B에서의 데이터가 다르면 어떤 것을 신뢰해야 하는지의 문제도 생길 수 있다. 우리는 Redux의 저장소에 있는 데이터를 모두 변경 불가능한 객체(Immutable, Swift에서는 Struct을 쓴다)로 구현하여 이 문제를 해결하였다. 이 부분은 코딩할 때 불편한 점이 조금 있지만, 그 불편함을 감수할만한 가치가 있다고 생각한다.Predictability — 저장소는 오직 액션을 통해서만 변경할 수 있다는 점이 무엇보다 장점인 것 같다. MVC와 같이 데이터를 어디서든 변경할 수 있다면 데이터와 관련된 버그를 찾는 데 소비하는 시간이 길어지곤 한다. Redux는 어떤 액션이 어디에서 불리는지 아는 것만으로도 그 시간을 비약적으로 단축할 수 있다.Maintainability — 저장소, 상태, 액션 그리고 리듀서로 역할과 레이어를 분리하게 되니 보통 코드 라인이 100줄을 넘지 않는다. 그만큼 유지보수 비용이 적어졌다.Organized Code — MVC 패턴에서는 비지니스 로직이 뷰에 들어가는 경우가 있기도 했었는데 Redux의 가이드라인을 따름으로써 자연스럽게 대부분의 뷰는 그저 데이터를 받고 시각화하는 dummy 뷰의 형태가 되었다. 비즈니스 로직이 완전히 뷰와 분리됨으로써 뷰의 복잡도와 코드를 관리하기가 쉬웠다.ReSwift 도입 시 주의할 점ReSwift 도입을 고려하는 분들을 위해 몇 가지 주의할 점을 소개하겠다.Performance — ReSwift에서는 저장소가 변경될 때마다 newState: 메소드가 호출이 되어 화면을 업데이트할 수 있게 되어있다. 채널 데스크 같은 경우는 실시간 애플리케이션(Real-time application)이라서 API 이벤트와 Socket 이벤트가 자주 발생해서 저장소가 변경되는데, 도입 초기 단계에 이 부분을 간과해서 화면이 거의 멈출 정도로 퍼포먼스가 나오지 않았었다. 만약 ReSwift를 적용했는데 퍼포먼스가 나오지 않는다면 newState: 함수 부분을 최적화하거나 미들웨어(middleware)를 만들어서 batch 형식으로 액션을 처리하는 방식을 고려해봐야 한다.Not thread safe — ReSwift는 thread-safe 하지 않아서 초반에 알 수 없는 crash들이 자주 발생했었다. 저자 같은 경우는 ActionWrapper를 만들어서 액션은 항상 메인스레드에서 처리되도록 강제했다.글을 마무리하며..Redux는 이미 자바스크립트 개발에서는 React와 함께 많이 쓰이고 있지만 iOS에서는 아직도 생소한 아키텍쳐이다. ReSwift는 아직 2년도 되지 않은 프로젝트이고 자바스크립트에서 처럼 유용한 Redux 미들웨어도 많지 않다. 또한 인지도도 MVC, MVVM, MVP에 아직 미비한 편이다. 프로덕션에 참고할 만한 예제도 찾기 어려웠기에 초기 러닝 커브는 조금 있었던 것으로 회상한다. 그럼에도 불구하고 우리 팀은 ReSwift를 적용해 보다 깨끗하고 유지보수하기 쉬운 프로그램을 만들 수 있었고 만족하며 사용하고 있다. 기존 MVC의 불편함을 아시는 분들은 충분히 도입할 가치가 있다고 생각한다.#조이코퍼레이션 #개발자 #개발팀 #인사이트 #경험공유 #일지 #Redux
조회수 753

기회 모델을 사용한 소셜 서비스 기획

안녕하세요! 저는 스포카 초기 서비스 개발에 함께 참여했던 서기준입니다. 이번 주엔 개발을 약간 벗어나서, 소셜한 서비스 기획에 도움이 되는 한 가지 모델과 그 모델에서 파생된 몇 가지 디자인 법칙을 소개하려고 합니다.많은 개발자가 소셜 서비스를 기획할 때 자신의 경험에 의존합니다. 경험을 이용한 기획은 유용하지만, 모든 사람이 같은 것을 관찰하지는 않고, 내가 경험해보지 않은 기능의 유용성에 대해서는 추측을 내리기 어렵다는 단점이 있습니다.좋은 모델은 세 가지 특징을 가지고 있습니다.현실의 시스템보다 단순함현실의 시스템을 충분히 서술함새로운 통찰의 기반이 됨소셜 서비스를 서술하는 좋은 모델들이 많이 생긴다면, 그것들을 통해 더욱 많은 개발자가 소통하고, 미래에 대해 예측할 수 있다고 생각합니다. 그럼 이제 기회 모델이라는 간단한 모델을 소개해보겠습니다.기회 모델 (Opportunities model)기회 모델은 게시판, 뉴스피드, 채팅 목록 같은 공간에 대한 모델입니다. 이 각각은 인터랙션 기회들의 목록입니다. 예를 들어, 페이스북의 뉴스피드는 흥미롭거나, 지루하거나, 짜증이 날 수 있는 업데이트들로 이루어져 있고. 네이트온에 로그온 한 유저의 목록은 내가 말을 걸 수 있는 사람들의 목록입니다. 이 중에는 내가 말을 걸고 싶은 사람이 있을 수도 있고, 없을 수도 있습니다.기회 모델에서 각각의 업데이트는 예상 유용성(expected utility)을 갖고 있습니다. 예를 들어 친구의 저녁 약속 취소 문자는 상당히 유용성이 높은 업데이트지만, 스팸으로 도배된 게시판은 유용성이 낮은 업데이트들로 채워져 있겠네요.이 개념을 이용하면 우리가 잘 아는 pull과 push 인터랙션을 설명할 수 있습니다.Pull Model유저가 그 공간을 방문해야만 새 콘텐츠를 볼 수 있는 모든 사이트는 pull model이 적용됩니다. 유저가 사이트에서 콘텐츠를 끌어오기 때문에 이런 이름이 붙은 것 같습니다. pull model의 예로는 블로그, 페이스북 뉴스피드, 게시판이 있습니다.자, 그럼 유저가 특정 인터랙션 공간을 방문했을 때 얻는 이득은 어떻게 계산할 수 있을까요?(유용성 * 업데이트 수) - 방문 비용 = 손익 잠시 예제를 통해 이 모델에 대해 살펴봅시다. 페이스북에 접속했는데 5개의 업데이트가 올라왔다고 가정하고 업데이트의 평균 유용성이 1이라고 가정합시다. 방문 비용이 5*1=5보다 낮으면 유저는 이번 방문이 만족스러울 것입니다.방문 비용은 어떻게 알아낼 수 있을까요? 정확하진 않더라도 다음과 같이 계산할 수 있을 것 같습니다. 대부분 사람은 손익이 0보다 클 때 사이트를 방문하도록 주기를 조정할 것입니다. 예를 들자면 페이스북 뉴스피드를 1분마다 방문하는 이용자는 별로 없겠지요. 그 주기와 평균 올라오는 포스트 개수를 알아낼 수 있다면평균 유용성 * 평균 업데이트 수 > 방문 비용 을 통해, 방문 비용을 추정할 수 있을 것입니다.Push Model문자가 오면 핸드폰에 알림이 뜨지요? 사용자를 새 이벤트에 집중하도록 하는 모델을 push model이라고 합니다. 이 모델의 손익도 한번 알아봅시다.(유용성 - 방해 비용) * 업데이트 수 = 손익 위의 식을 살펴보면, 유용성이 방해비용보다 크다면 push model이 그 인터랙션 공간에 어울리는 모델이라는 것을 알 수 있습니다. 유용성이 시간이 지남에 따라 급격히 감소하는 채팅이나 파티 초대 메시지도 마찬가지입니다.조금 전 좋은 모델의 특징 세 가지를 설명했습니다.현실의 시스템보다 단순함현실의 시스템을 충분히 서술함새로운 통찰의 기반이 됨이 모델을 사용한다면 어떤 통찰을 얻을 수 있을까요? 아래 생각나는 몇 가지 아이디어들을 적어보겠습니다.유용성이 낮은 업데이트는 pull model을 사용해 보여주는 것이 좋지만, 업데이트 여러 개가 쌓여서 방해비용보다 높아졌다고 판단된다면, 여러 업데이트를 모아 push를 할 수 있습니다.매번 이용자가 방문할 때 pull model 손익을 계산해 볼 수도 있습니다. 만약 손익이 마이너스라면 방문데이터를 더 자세하게 분석해봅니다.유용성을 더 정확하게 분석해 유저그룹을 나눌 수도 있습니다. 야구 사이트를 만든다고 생각해봅시다. 팀별 게시판을 나누는 것이 좋을까요, 아니면 하나의 게시판에서 모든 유저들이 대화할 수 있도록 할까요? 만약 한번 방문한 유저가 평균 20개의 업데이트를 보는데, 그 중 17개가 자신의 팀에 관한 내용이 아니라면 흥미를 잃어버릴 수도 있습니다. 하지만 다른 팀에 관한 글의 유용성이 0보다 크고, 3개의 새로운 글만으로는 방문 비용을 메꿀 수 없다고 판단하면 게시판을 합칠 수도 있습니다.기회 모델에 대한 더 자세한 분석은 Robert Kraut과 Paul Resnick 교수의 Building successful online communities: Evidence-based social design 에서 찾아보실 수 있습니다. 아직 출판되지 않은 책이라 무료로 받아볼 수 있습니다 :)#스포카 #개발 #기획 #개발자 #인사이트 #성장 #조언 #꿀팁
조회수 2197

영화 ‘앤트맨’을 통해 알아 본 안드로이드 나인패치(Android 9 Patch)

시작영화 ‘캡틴 아메리카: 시빌워’를 본 사람이라면 작은 ‘앤트맨’의 존재감이 누구보다 컸다고 말할 수 있습니다. 앤트맨은 가장 중요한 전투 신에서 자유자재로 신체 크기를 바꾸며 맹활약을 한 히어로인데요.안드로이드에도 이런 앤트맨처럼 크기를 자유자재로 바꾸되, 해상도를 그대로 보존하여 앱을 구현하는데 큰 도움을 주는 이미지 저장방식이 있습니다. 바로 나인패치입니다. 포스팅을 통해 나인패치를 이해해보고자 합니다.나인패치 이해하기#사이즈는 바뀌지만 내용은 그대로영화 속 앤트맨은 핌입자를 통해 분자보다 더 작은 양자 사이즈만큼 작아졌다가, 비행기보다 더 큰 사이즈로 변하는 히어로인데요. 핌 입자를 사용시 질량에는 변화가 없어 작아진 크기에서도 정상 어른의 펀치와 같은 위력을 줍니다.나인패치 역시 앤트맨과 같은 특징을 가지고 있는데요. 우리가 사용하고 있는 핸드폰의 해상도는 제각각 입니다. 하지만 이미지를 그 해상도에 전부 맞춰서 제작하기에는 무리가 있죠. 그렇기 때문에 디바이스에 표현되는 아이콘이나 버튼 등에 확대 되는 영역을 지정해줍니다. 그러면 큰 해상도에 이미지를 적용 하여도 픽셀이 깨지지 않고 확대된 이미지를 사용 할 수 있습니다.좀 더 정확하게 설명하자면, 이미지를 9분할 하여 확대되는 영역과 아닌 영역을 구분하여 저장하는 방식이며 이미지 확장자는. 9.png가 됩니다. 아래의 그림에서 살펴보면 빨간색 화살표 영역은 늘어나고 흰색 영역은 늘어나지 않게 됩니다.나인패치 이미지가 어떤 구조를 가지고 있는 어떻게 동작하는지에 대해 추가적으로 설명해보겠습니다.우선, 나인패치는Stretchable area와 Padding box 두가지의 영역으로 나뉩니다.Stretchable area는 늘어나는 영역은 이미지를 늘려주는 구간을 설정해주는 나인패치 영역입니다. 그래서 가로, 세로 어떤 크기로 늘어나도 형태가 깨져 보이지 않습니다.Padding box는 이미지 위에 어떠한 내용물을 어느 위치에 표시할지 정의 하는 영역입니다.버튼 크기가 변경되어도 정보 표시 영역을 나인패치로 잡아 좌우,상하 여백은 그대로 두고 이미지 확대/축소에 따른 텍스트가 정리되어 보여집니다.나인패치는 1px 검정색 선의 길이와 여백을 이용해서 늘려주고 싶은 이미지 영역과 표현하고 싶은 텍스트의 영역을 지정할 수 있는 것입니다.조금은 복잡해 보이지만, 나인패치로 지정하는 과정이 필요한 이유는 모바일은 한정된 용량을 가지고 있기 때문에 용량을 줄여서 하나의 이미지로 다양하게 사용할 수 있도록 하기 위해서 입니다.나인패치 만들어보기#만드는 방법나인패치를 만드는 방법에는 여러가지가 있습니다.   1. 포토샵으로 만들고, 확장자를 name.9.png으로 저장   2. 안드로이드 sdk 도구를 다운로드하여 만든다.       https://developer.android.com/studio/?hl=ko   3. Android Asset Studio 활용       http://romannurik.github.io/AndroidAssetStudio/nine-patches.html그중에서 툴 설치도 필요 없고 쉽게 만들 수 있는 3번의 방법을 활용하여 간략하게 나마 만들어보겠습니다.#우리는 그저 감사하게 사용할 뿐세상은 넓고 금손이 많은 것 같아요. 빠르게 만들수 있는 방법을 선택하겠습니다. 위 3번의 주소를 타고 사이트에 접속하면 아래와 같은 화면이 보여집니다.나인패치를 만들 수 있는 웹 툴인데, 저 사이트에는 나인패치 뿐만 아니라 안드로이드 디자인을 위한 다양한 툴을 제공하니 한번 참고해보시면 좋을 것 같습니다. 언제 이런걸 만들 생각을 하셨는지 한번 더 자괴감과 감사함을 느끼며 샘플 버튼 이미지를 불러옵니다.왼쪽 패널을 보면 이미지의 리소스 해상도를 지정하는 부분과 Drawable 이름을 편집할 수 있는 기능이 있습니다. 이름을 변경하게 되면 zip파일로 다운 받았을 때 변경된 이름으로 다운로드 됩니다.자 그럼 불러온 이미지가 가운데 화면에 보여집니다. Stretch Regions는 늘어나게 되는 부분을 설정하는 것입니다. 화면에 보이는 얇은 검은 선으로 Stretch Regions을 지정하면 됩니다.위와 같이 설정하게 되면 해상도에 따라 붉은색 부분이 늘어나게 됩니다.Contetns Padding은 안에 들어가는 텍스트가 들어가는 여백을 설정해줍니다.오른쪽 패널에서 Preview로 텍스트가 들어가는 것을 확인하면서 설정 할 수 있습니다.With content를 체크해주셔야 텍스트가 보여집니다.완성되면 Assets 탭에서 zip파일을 다운로드 받아주세요.다운로드가 완료되면 drawable name.9.zip으로 다운로드 되고 zip파일을 압축해제 하면 해상도 별로 나인패치 파일이 생성됩니다.부족하지만 나인패치에 대해 알아가는 시간이 되었기를 바라며, 이번 글은 여기서 마무리 하겠습니다.#에이치나인 #디자이너 #개발자 #협업툴 #크래커나인 #솔루션기업

기업문화 엿볼 때, 더팀스

로그인

/