스토리 홈

인터뷰

피드

뉴스

조회수 1117

flake8-import-order-spoqa

안녕하세요. 스포카 프로그래머 홍민희입니다.스포카 사내에서는 파이썬 코드의 스타일을 맞추기 위해 flake8을 사용해왔습니다. PEP 8 스타일을 준수하게 해주고, 안 쓰는 임포트를 꼭 지우게 하는 등의 좀더 구체적인 규칙도 지키게 해주는 린트 도구입니다. 사실상의 표준이기 때문에 파이썬을 이미 쓰고 있는 분들이라면 많이들 알고 계실 것입니다.그렇지만 import문의 사용에 대해서는 우리가 원하는 것만큼의 규칙을 제공하지 않아서, 예전부터 동료 강효준 님이 import-order를 별도로 만들어서 써왔습니다. 만들었을 당시에는 import문의 쓰임에 대한 린트 도구가 없었기 때문에 유용하게 써왔고, 다른 파이썬 오픈 소스 프로젝트에서도 유용할 것 같다고 생각하여 쓰인지 1년쯤 지난 뒤에 오픈 소스로 공개했습니다.하지만 flake8과는 다르게 외부 커뮤니티에서 널리 쓰이지는 못했고, 사실상의 표준이 되었다면 편집기 연동 등이 이뤄졌겠지만, 그에 미치지는 못했습니다. pre-commit hook이나 CI에서나 검사가 이뤄지기 때문에, 코딩을 마쳤다고 생각한 이후에 뒷북으로 실수를 바로잡는 일이 많아 불편했습니다.그 뒤로 시간이 지나자 커뮤니티에서는 flake8-import-order라는 도구가 나와서 사실상의 표준이 됐습니다. 이미 많은 편집기에서 연동이 되는 flake8의 확장으로 구현됐기 때문에 편집기에서 즉시 확인이 가능했고, 더 많은 옵션도 제공했습니다. 그렇지만 cryptography 프로젝트 사람들이 만든 도구다보니, cryptography 스타일 및 Google 스타일 등 몇 가지만 제공했고, 이 도구를 활용하려면 스포카에서 3년 넘게 쓰이던 import 스타일을 포기하고 사내의 모든 코드를 전부 수정하는 난리를 피우거나, flake8-import-order에 스포카 사내 스타일을 옵션으로 추가하거나, 프로젝트를 포크해서 별도로 유지보수하며 써야 했습니다.사내 모든 코드를 전부 수정하는 것은 쉽지도 않을 뿐더러, 스포카에서 쓰이던 스타일에도 나름의 논거는 있기 때문에 쉽게 포기하기는 힘든 결정이었습니다. 일부 프로젝트부터 옮겨가는 시도도 있었으나, 같은 회사에서 코드마다 스타일의 일관성이 달라지는 혼란이 있었습니다.저는 flake8-import-order에 스타일을 추가하는 것을 주저했습니다. Google 스타일처럼 문서화가 이미 아주 자세히 되어 있지도 않고 유명하지도 않은, 일개 회사의 사내 스타일을 사실상의 표준 린트 도구의 7번째 공식 지원 스타일로 추가하는 것이 이뤄질 개연성이 낮다고 봤습니다.그래서 프로젝트를 포크하기로 마음먹은 것이 보름 전쯤입니다. 그런데 코드를 열어보니 좀더 나은 아이디어가 떠올랐습니다. flake8-import-order의 코드를 고치지 않고 런타임에 스타일을 확장 가능한 플러그인 구조를 추가하면, 스포카에서 쓰는 import 스타일을 별도 패키지로 구현할 수도 있다는 생각이 든 것입니다. 당시 flake8-import-order의 스타일 구현은 Style의 기반 클래스를 상속받는 식으로 이뤄져 있었고, 다만 스타일의 목록이 하드코딩되어 있는 것이 문제였습니다. 막상 코드를 읽어보니 플러그인 구조를 도입하는 것이 어렵지 않을 것이라는 생각이 든 것입니다.파이썬 생태계에서는 서로 다른 패키지 사이에서 런타임에 확장 가능한 의존성 주입을 위해 setuptools 시스템이 엔트리 포인트라는 개념을 제공합니다. 예를 들어 국제화 라이브러리인 Babel은 파이썬 이외의 프로그래밍 언어에서도 gettext 문자열을 extract할 수 있게 하기 위해, 확장 가능한 babel.extractors 엔트리 포인트를 노출합니다. 그리고 별도의 템플릿 언어인 Jinja는 해당 템플릿 엔진을 쓸 때 국제화도 대응할 수 있도록, babel.extractors 엔트리 포인트에 Jinja 언어를 해석하는 jinja2.ext.babel_extract를 주입합니다.저는 같은 개념을 활용하여, flake8-import-order가 flake8_import_order.styles라는 엔트리 포인트를 노출하게 하는 패치를 제출했고, 다행히도 업스트림에 받아들여졌습니다.flake8-import-order를 런타임에 확장할 수 있는 구조가 됐으니, flake8-import-order 위에서 스포카의 import 사용 가이드를 구현하는 것은 어렵지 않은 작업이었습니다. 어차피 스포카의 파이썬 코딩 스타일은 대부분 PEP 8을 그대로 따르고 있었고, 따라서 flake8-import-order에 이미 존재하는 스타일 구현에서 몇 부분만 덮어씌우는 것으로 충분했기 때문입니다.위와 같은 장광설 끝에, 그래서 이번에 소개하려고 한 스포카의 파이썬 import 린트 도구는 flake8-import-order-spoqa입니다. 만든지 보름이 지난 뒤에 소개하는 것은, flake8-import-order에 제출한 패치가 포함된 0.12가 PyPI에 릴리스될 때까지 기다려야 했기 때문입니다.사용법은 어렵지 않습니다. pip로 flake8-import-order-spoqa를 설치한 뒤에, flake8 설정에 다음 옵션을 추가하면 됩니다.[flake8]import-order-style = spoqa#스포카 #개발 #개발자 #개발팀 #개발팁 #꿀팁 #인사이트
조회수 1769

♥ 사무실 투어 in 프리윌린 ♥

안녕하세요. 매쓰플랫입니다 :)좋은 서비스를 제공하기 위해서는쾌적한 공간에서 근무를 하는 것이참 중요한 거 같아요~!쾌적한 근무공간 1등!!프리윌린 사무실 투어 Start ♥.♥로비 & 대회의실프리윌린 사무실을 방문하면제일 먼저 마주하는 공간이에요.로비 & 대회의실뒷 부분에는 프리윌린의 '대회의실'이 곳에서 보통은 월요일 전체 회의가 진행돼요~!회사가 점점 성장할수록직원들도 늘어나고~처음에는 넓게만 느껴졌던 공간에요즘에는 직원들로 가득가득 차네요 ㅎㅎ소회의실 모습① 각 팀별 회의 ② 협업 회의다양한 용도로 사용하는 소회의실~!넓은 창문이 있어서 쾌적한 환경은 기본티비, 에어컨, 간식, 화이트 보드까지....시원한 환경에서간식 먹으면서 회의를 즐겁게 할 수 있어요.소회의실 모습회의를 하다가 나온 아이디어는'화이트 보드' 적극적으로 활용~!프리윌린하면 빠질 수 없는 간식들 ♥오전에 폭풍같은 열일하고,가끔 피곤할 때가 있어요 ㅠㅠ그럴 때 찾는 공간!바로 휴게실이에요.안락한 공간에서 잠시 휴식을 취한 뒤으쌰으쌰해서 오후 근무 돌입~!프리윌린 직원들이 휴식 / 전화통화 / 스트레칭 장소 등등다양한 용도로 활용 한답니다.모든 직원이 각자의 자리에서열심히 일하는 공간~!프리윌린이 사무실이 좋은 이유 중 하나!층고가 높고 사면이 창문으로 되어 있어서일하면서도 답답한 느낌이 없어요 :)지금까지 프리윌린 사무실 투어 어떠셨나요?매쓰플랫은 1.학습지 커스텀 뿐만 아니라,2. 35만개의 방대한 시중교재 DB를 연동한 문제은행,3. 학생 관리 시스템을 통한 학생 성적 레포트 서비스 등을 제공합니다. 매쓰플랫 7일 무료체험도 알아 보세요 :Dclick! click!♥ 매쓰플랫 무료로 시작하기 ♥http://bit.ly/2vSSmxl※ [조기 마감주의] 매쓰플랫 설명회 신청 (8/24)설명회 참여하고 혜택받기 :)가입비 할인 혜택 받기:)
조회수 965

기록을 시작하다

많은 사람들이 그렇겠지만, 나도 글을 쓰면서 생각을 정리해보고 싶다는 욕구를 느꼈다.많은 사람들이 그렇겠지만, 욕구를 느낀지 꽤 오래, 그리고 자주 느꼈지만 실천을 못했다.2017년, 30대에 접어들었다.(만으로는 29세라는 레퍼토리는 주변 87년생 형들이 넘나 우려먹어버린 관계로, 써먹지 않는 걸로)30대 입성의 힘을 빌려, 기록을 시작해보려 한다.무슨 주제를 써볼까, 어떤 테마로 써볼까를 고민하기 전에,아직 안해봤으니 일단 저질러서 이것저것 써보고 방향은 잡아나가는걸로.여기서도 스타트업 정신 발동! 시작이 반이겠죠? 그렇죠?^^*물리적으로, 심적으로 바빠지다보니 어떤 것을 해야지라고 생각만 했을 때 하지 못하는 경우가 대부분이다.(물론 의무적으로 해야하는 것들에 대해선 어떻게든 해오고 있다.)그래서 최근에 항상 써먹는 방법이 모든 활동들을 시스템화시키는 것이다.예를 들어, 최근의 국정농단 사태를 보면서 나 자신에게 회의감이 들었다. 연일 떠들석한 뉴스거리와 문제들 속에서 '내가 그 문제들을 판단할 만한 지식을 가지고 있는가. 알량한 지식가지고 정치에 관심이 있는 척, 깨인척 진보는 이렇고 보수는 이렇고 대통령은 잘못했다라고 말하고 있지는 않은가.' 라는 반문에 대해 아직도 자유롭지 못하다. 그리고 이러한 것을 자각하고 있으면서도 일상이라는 핑계속에 더 적극적으로 임하지 못하는 것 역시 부끄럽다.그래서 이러한 시스템을 만들기로 결심했다.주말을 이른오후/저녁/밤 3타임으로 나눴을때 총 6타임이 생긴다.그중에 한타임만큼은 이러한 시국과 정치, 경제 등에 대한 공부를 하는 것으로. 다른 한타임은 오늘부터 시작한 '한주를 정리하며' 라는 허세 가득한 가칭의 글쓰기 프로젝트를 진행하려고 한다.브런치를 물들이는 수많은 글들은 아마 이 첫 글에 선전포고된 '6타임 프로젝트' 로 물들지 않을까 기대해본다.- 현재는 1월 막바지 일요일 저녁 10시, 아메리카노 과다 복용으로 인한, 약간은 하이텐션 상태 #학생독립만세 #교육기업 #기업문화 #조직문화
조회수 2400

JIRA하고 자빠졌네!?

Overview“JIRA하고, 자빠졌네!” 세종대왕은 확실히 개발자의 두뇌를 가지고 있었던 게 분명합니다. 먼 시대를 지나 오늘날 QA를 하는 저에게 응원을 해주시니 말입니다. 하지만 그는 틀렸습니다. 걱정과는 다르게 다행히 자빠지진 않았거든요. 지라(JIRA) 덕분입니다.갑자기 지라 이야기가 나와 당황하셨죠? 축하해주세요. 드디어 브랜디도 지라를 사용하게 되었답니다. (짝짝짝!) 지라 도입은 처음이라 세팅부터 쉽지 않았는데요. 이번 글은 눈물겨웠던 지라 세팅 과정과 브랜디의 이슈관리를 소개하겠습니다. 스크럼을 쓰면 좋은 점스크럼(Scrum)은 요구 사항 분석부터 하는 칸반(Kanban)보다 효율적입니다. 안드로이드와 iOS로도 나눠져 있고 업무를 짧게 반복하기 때문이죠. 스크럼에 적합한 워크플로우(Workflow)를 볼까요? 이것은 실제로 브랜디 R&D본부에서 사용하고 있기도 합니다. 스크럼에 적합한 워크플로우IN PROGRESS: 이슈나 개발 요건을 티켓으로 만들면 IN PROGRESS 상태가 됩니다. RESOLVED: 이슈나 개발 요건이 완료되면 RESOLVED 상태로 변경합니다.QA: QA가 필요한 개발 요건은 QA상태로 변경합니다.PASS: 이슈 또는 개발 요건이 수정되었거나 문제가 없다면 PASS 상태로 변경합니다.FAIL: 이슈 또는 개발 요건이 제대로 수정되지 않았거나 다른 이슈가 발생하면 FAIL 상태로 변경합니다.QA불필요: QA가 필요하지 않은 개발 요건은 QA불필요 상태로 변경합니다.DONE: 이슈를 해결했거나 개발을 완료하면 DONE 상태로 변경합니다CLOSE: 담당 팀장님이 이슈 확인 후 CLOSE 처리합니다. 예를 들어보겠습니다. 킥오프 서비스 회의를 하고, SB를 제작, 리뷰합니다. 이후에 디자인팀과 개발팀 일정을 공유하고 스크럼 마스터는 스프린트 주기를 책정하죠. 스프린트가 시작되면 개발자는 스토리 티켓을 작성하는데요. 개발이 끝나면 QA가 필요한 티켓은 테스트를 진행하고, QA가 종료되면 스프린트도 종료됩니다.Epic 티켓위의 이미지는 Epic 티켓입니다. Android, iOS, 이슈 등 모든 티켓은 Epic 안에서 관리합니다. 한 곳에서 한꺼번에 관리하기 때문에 히스토리 관리가 편하고, 진행 상황도 확인할 수 있습니다.티켓 생성개발팀의 티켓 생성입니다. 개발자는 SB를 보고 개발 티켓을 작성합니다. 개발 티켓 작성 후에 개발이 진행되며 QA 판단 여부를 체크해 QA 상태로 변경합니다. 변경된 티켓에 관한 QA가 진행되며 문제가 없으면 해당 티켓은 종료됩니다.이슈 생성다음은 이슈 생성입니다. 파악한 SB는 디자인 시안과 비교하며 개발이 된 Android, iOS 테스트 파일을 QA합니다. QA를 진행할 때 발생한 이슈는 지라 티켓으로 등록하여 이슈를 관리합니다. 모든 이슈 티켓 종료되면 해당 차수의 QA는 끝나고 마침내 상용에 배포합니다. 배포가 완료되면 필수 및 크리티컬 리그레이션 테스트가 진행됩니다. Conclusion실수는 항상 모든 것이 끝난 이후에 보이기 마련입니다. 수십 번 QA를 해도 보이지 않던 문제들이 상용에 올라간 이후부터 보이기 시작하죠. 스크럼은 이런 실수들을 가장 최소화할 수 있는 툴이 아닐까 생각합니다. 물론 아무리 좋은 툴을 써도 팀원들과 함께 뭉치는 것보다 중요한 것은 없겠죠. 다음 글은 자동화를 주제로 찾아뵙겠습니다. JIRA하고 자빠지지 않는 개발자가 됩시다!글김치영 대리 | R&D PM팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발자 #개발팀 #인사이트 #경험공유 #JIRA
조회수 755

유통 공룡 아마존의 홀푸드 인수와 아마존고

책 장사로 시작해서 유통 공룡, 그리고 이제 클라우드 서비스로 발전한 아마존의 도약은 놀랍기만 합니다. 지난 2017년 6월에는 아마존이 유기농 식료품 체인 ‘홀푸드’를 인수해서 유통시장에 큰 파장을 가져왔는데요, 언론들은 아마존의 식품시장 진출로 인한 식품유통시장 변화와 막강 라이벌을 맞이할 월마트의 반응에 주목했습니다.아마존이 홀푸드를 인수한 후에 아마존의 주가는 급등했지만 경쟁사인 월마트, 코스트코 등은 일제히 하락을 했습니다. 그만큼 아마존의 식품시장 진출에 시장에서는 많은 기대를 한다는 반증이겠지요?아마존은 오프라인 매장에 ‘아마존 고’라는 무인시스템을 사용해서 인력을 줄이겠다는 전략이었지만 얼마 전 ‘아마존 고’ 매장을 현재로서는 더 늘릴 계획이 없다고 발표를 하였죠. 무인시스템 매장에 대한 고객들의 반응을 관찰해보는 기간이 필요한 것이 아닐까 추측해봅니다. 고객들도 적응하는 데는 시간이 필요하니까요.그동안 아마존이 괄목할만한 성장이 이루면서 핵심가치로 삼은 것은 ‘절약’과 ‘효율성’이기 때문에 직원의 행복과 만족을 중요시하는 홀푸드의 조직문화가 아마존의 문화와 조화를 이루기 위해 어떻게 변화되고 자리를 잡아나갈지 그 또한 관심을 가지고 지켜볼만한 점인 것 같습니다.더욱 재미있는 것은 한 때 아마존의 경쟁자들이었던 백화점 유통업체들이 아마존이 홀마트를 인수하는 것을 보면서 홀마트처럼 자신들도 아마존의 러브콜을 받아 부진을 극복해보기를 바라는 곳들도 생겨났다는 점입니다. 시장은 항상 변하기 마련이지만 '이윤창출' 보다는 '고객 편의와 확보를 통한 시장 확장'에 비중을 두는 아마존의 엄청난 성장은 어쩌면 당연한 것인지도 모르겠습니다.
조회수 961

로봇 택시가 산업 지형을 바꾼다

로봇 택시가 산업 지형을 바꾼다"자율 주행 전기차의 등장으로 유가가 배럴당 25달러까지 떨어지고, 새로운 세계 질서가 도래할 것이다."'에너지 혁명 2030' 의 저자로 2015년 한국을 방문한 적 있는 토니 세바 스탠포드대 교수(RethinkX의 공동 설립자)가 최근 미국 CNBC와 인터뷰에서 "기름 수요가 2020년~2021년 사이 1백만 배럴로 꼭지를 찍은 뒤 10년 내(2030년경)로 70만 배럴까지 줄어들면서 유가가 하락세를 면치 못할 것”이라며 이같이 예견했다.점차 많은 사람들이 공유경제의 축으로 자율 주행 전기차를 사용하게 되면서 ▽오일 회사는 생존이 어렵게 되고 ▽심해, 세일가스업체와 정유 파이프라인 회사들도 문을 닫게 될 것이라는 게 그의 예측이다.차량도 소유의 대상에서 서비스의 대상, 이른바 TAAS (transport as a service) 로 바뀐다. 차량을 더 이상 구입하지 않고, 편리하게 앱으로 로봇 택시를 호출해 이용하면 그만이다. 자율 주행 전기차의 가격도 싸지면서, 전기차 이용이 소유에 비해 10배 정도 저렴해질 것이라는 것.  경제학자인 그의 섬뜩한 전망은 계속된다. 급속한 기술의 진보로 인해 값비싼 정유회사나, 적응력이 떨어지는 카 메이커(의 주식)가 매력이 없어지며, 차량과 관련된 직업 중에서 차 딜러도 2024년까지 사라질 것이라는 예상이다.뿐만 아니라, 주차공간의 80% 이상이 쓸모없게 되고, (자동차)보험의 비용도 급격하게 떨어지기 때문에 보험회사도 설 땅이 좁아진다는 것.이 같은 그의 전망이 혼자만의 견해는 아니지만,  다른 사람들은 이런 변화에 훨씬 많은 시간이 걸리고, 그렇게 극적이지도 않을 거라고 내다본다.반대로 그는 차량 관련 지출이 줄면서 가계 소비가 늘어나 경제성장을 촉진할 것이라고 예상했다. 아울러 차세대 차의 개발과 관련된 차 운영체제, 컴퓨터 플랫폼, 배터리, 지도 소프트웨어 회사들을 눈여겨 보라고 조언했다.세바 교수의  유가 하락 전망이  결코 급진적인 것은 아니다.  유가는 WTI(서부 텍사스중질유)기준으로 2016년 2월에  배럴당 20달러대 중반까지 급락한 바 있다.  6월 14일 현재는  40달러대 중반에 머물러 있다.다만, 차량이 소유의 대상에서 이용 서비스의 대상으로 바뀐다든지, 차 딜러가 사라진다든지 하는 등의 혁신적이거나 과격한 전망이 실현될 지는 두고 볼 일이다.참조 : 다음은 토니 세바 교수가 참여한 화제의 보고서 ‘Rethinking transportation 2020-2030’ 원문 링크https://static1.squarespace.com/static/585c3439be65942f022bbf9b/t/591a2e4be6f2e1c13df930c5/1494888038959/RethinkX+Report_051517.pdf
조회수 1225

레진 기술 블로그 - AWS Auto Scalinging Group 을 이용한 배포

레진코믹스의 서버 시스템은 잘 알려진대로 Google AppEngine에서 서비스되고 있지만, 이런저런 이유로 인해 최근에는 일부 컴포넌트가 Amazon Web Service에서 서비스되고 있습니다. AWS 에 새로운 시스템을 셋업하면서, 기존에 사용하던 PaaS인 GAE에서는 전혀 고민할 필요 없었던, 배포시스템에 대한 고민이 필요했습니다. 좋은 배포전략과 시스템은 안정적으로 서비스를 개발하고 운영하는데 있어서 필수적이죠.초기에는 Beanstalk을 이용한 운영에서, Fabric 을 이용한 배포 등의 시행착오 과정을 거쳤으나, 현재는 (스케일링을 위해 어차피 사용할 수밖에 없는) Auto Scaling Group을 이용해서 Blue-green deployment로 운영 중입니다. ASG는 여러 특징 덕분에 배포에도 유용하게 사용할 수 있습니다.ASG를 이용한 가장 간단한 배포는, Instance termination policy 를 응용할 수 있습니다. 기본적으로 ASG가 어떤 인스턴스를 종료할지는 AWS Documentation 에 정리되어 있으며, 추가적으로 다음과 같은 방식을 선택할 수 있습니다.OldestInstanceNewestInstanceOldestLaunchConfigurationClosestToNextInstanceHour여기서 주목할 건 OldestInstance 입니다. ASG가 항상 최신 버전의 어플리케이션으로 스케일아웃되게 구성되어 있다면, 단순히 인스턴스의 수를 두배로 늘린 뒤 Termination policy 를 OldestInstance 로 바꾸고 원래대로 돌리면 구버전 인스턴스들부터 종료되면서 배포가 끝납니다. 그러나 이 경우, 배포 직후 모니터링 과정에서 문제가 발생할 경우 기존의 인스턴스들이 이미 종료된 상태이기 때문에 롤백을 위해서는 (인스턴스를 다시 생성하면서) 배포를 다시 한번 해야 하는 반큼 빠른 롤백이 어렵습니다.Auto scaling lifecycle 을 이용하면, 이를 해결하기 위한 다른 방법도 있습니다. Lifecycle 은 다음과 같은 상태 변화를 가집니다.기본적으로,ASG의 인스턴스는 InService 상태로 진입하면서 (설정이 되어 있다면) ELB에 추가됩니다.ASG의 인스턴스는 InService 상태에서 빠져나오면서 (설정이 되어 있다면) ELB에서 제거됩니다.이를 이용하면, 다음과 같은 시나리오로 배포를 할 수 있습니다.똑같은 ASG 두 개를 구성(Group B / Group G)하고, 그 중 하나의 그룹으로만 서비스를 운영합니다.Group B가 라이브 중이면 Group G의 인스턴스는 0개입니다.새로운 버전을 배포한다면, Group G의 인스턴스 숫자를 Group B와 동일하게 맞춰줍니다.Group G가 InService로 들어가고 ELB healthy 상태가 되면, Group B의 인스턴스를 전부 Standby로 전환합니다.롤백이 필요하면 Standby 상태인 Group B를 InService 로 전환하고 Group G의 인스턴스를 종료하거나 Standby로 전환합니다.문제가 없다면 Standby 상태인 Group B의 인스턴스를 종료합니다.이제 훨씬 빠르고 안전하게 배포 및 롤백이 가능합니다. 물론 실제로는 생각보다 손이 많이 가는 관계로(특히 PaaS인 GAE에 비하면), 이를 한번에 해주는 스크립트를 작성해서 사용중입니다. 대략 간략하게는 다음과 같습니다. 실제 사용중인 스크립트에는 dry run 등의 잡다한 기능이 많이 들어가 있어서 걷어낸 pseudo code 입니다. 스크립트는 사내 PyPI 저장소를 통해 공유해서 사용 중입니다.def deploy(prefix, image_name, image_version): '''Deploy specified Docker image name and version into Auto Scaling Group''' asg_names = get_asg_names_from_tag(prefix, 'docker:image:name', image_name) groups = get_auto_scaling_groups(asg_names) # Find deployment target set future_set = set(map(lambda g: g['AutoScalingGroupName'].split('-')[-1], filter(lambda g: not g['DesiredCapacity'], groups))) if len(future_set) != 1: raise ValueError('Cannot specify target auto scaling group') future_set = next(iter(future_set)) if future_set == 'green': current_set = 'blue' elif future_set == 'blue': current_set = 'green' else: raise ValueError('Set name shoud be green or blue') # Deploy to future group future_groups = filter(lambda g: g['AutoScalingGroupName'].endswith(future_set), groups) for group in future_groups: asg_client.create_or_update_tags(Tags=[ { 'ResourceId': group['AutoScalingGroupName'], 'ResourceType': 'auto-scaling-group', 'PropagateAtLaunch': True, 'Key': 'docker:image:version', 'Value': image_version, } ]) # Set capacity, scaling policy, scheduled actions same as current group set_desired_capacity_from(current_set, group) move_scheduled_actions_from(current_set, group) move_scaling_policies(current_set, group) # Await ELB healthy of instances in group await_elb_healthy(future_groups) # Entering standby for current group for group in filter(lambda g: g['AutoScalingGroupName'].endswith(current_set), groups): asg_client.enter_standby( AutoScalingGroupName=group['AutoScalingGroupName'], InstanceIds=list(map(lambda i: i['InstanceId'], group['Instances'])), ShouldDecrementDesiredCapacity=True ) def rollback(prefix, image_name, image_version): '''Rollback standby Auto Scaling Group to service''' asg_names = get_asg_names_from_tag(prefix, 'docker:image:name', image_name) groups = get_auto_scaling_groups(asg_names) def filter_group_by_instance_state(groups, state): return filter( lambda g: len(filter(lambda i: i['LifecycleState'] == state, g['Instances'])) == g['DesiredCapacity'] and g['DesiredCapacity'], groups ) standby_groups = filter_group_by_instance_state(groups, 'Standby') inservice_groups = filter_group_by_instance_state(groups, 'InService') # Entering in-service for standby group for group in standby_groups: asg_client.exit_standby( AutoScalingGroupName=group['AutoScalingGroupName'], InstanceIds=list(map(lambda i: i['InstanceId'], group['Instances'])) ) # Await ELB healthy of instances in standby group await_elb_healthy(standby_groups) # Terminate instances to rollback for group in inservice_groups: asg_client.set_desired_capacity(AutoScalingGroupName=group['AutoScalingGroupName'], DesiredCapacity=0) current_set = group['AutoScalingGroupName'].split('-')[-1] move_scheduled_actions_from(current_set, group) move_scaling_policies(current_set, group) 몇 가지 더…Standby 로 돌리는 것 이외에 Detached 상태로 바꾸는 것도 방법입니다만, 인스턴스가 ASG에서 제거될 경우, 자신이 소속된 ASG를 알려주는 값인 aws:autoscaling:groupName 태그가 제거되므로 인스턴스나 ASG가 많아질 경우 번거롭습니다.cloud-init 를 어느 정도 최적화해두고 ELB healthcheck 를 좀 더 민감하게 설정하면, ELB 에 투입될 때까지 걸리는 시간을 상당히 줄일 수 있긴 하므로, 단일 ASG로 배포를 하더라도 롤백에 걸리는 시간을 줄일 수 있습니다. 저희는 scaleout 시작부터 ELB에서 healthy 로 찍힐 때까지 70초 가량 걸리는데, 그럼에도 불구하고 아래의 이유 때문에 현재의 방식으로 운영중입니다.같은 방식으로 단일 ASG로 배포를 할 수도 있지만, 배포중에 혹은 롤백 중에 scaleout이 돌면서 구버전 혹은 롤백 버전의 인스턴스가 투입되어버리면 매우 귀찮아집니다. 이를 방지하기 위해서라도 (Blue-green 방식의) ASG 두 개를 운영하는게 안전합니다.같은 이유로, 배포 대상의 버전을 S3나 github 등에 기록하는 대신 ASG의 태그에 버전을 써 두고 cloud-init 의 user-data에서 그 버전으로 어플리케이션을 띄우게 구성해 두었습니다. 이 경우 인스턴스의 태그만 확인해도 현재 어떤 버전이 서비스되고 있는지 확인할 수 있다는 장점도 있습니다.다만 ASG의 태그에 Tag on instance 를 체크해 두더라도, cloud-init 안에서 이를 조회하는 경우는 주의해야 합니다. ASG의 태그가 인스턴스로 복사되는 시점은 명확하지 않습니다. 스크립트 실행 중에 인스턴스에는 ASG의 태그가 있을 수도, 없을 수도 있습니다.굳이 인스턴스의 Lifecycle 을 Standby / InService 로 전환하지 않고도 ELB 를 두 개 운영하고 route 53 에서의 CNAME/ALIAS swap 도 방법이지만, DNS TTL은 아무리 짧아도 60초는 걸리고, JVM처럼 골치아픈 동작 사례도 있는만큼 선택하지 않았습니다.물론 이 방법이 최선은 절대 아니며(심지어 배포할때마다 돈이 들어갑니다!), 현재는 자원의 활용 등 다른 측면에서의 고민 때문에 새로운 구성을 고민하고 있습니다. 이건 언젠가 나중에 다시 공유하겠습니다. :)
조회수 1204

현대오일뱅크 선배들의 이야기 - "자기 자신에 대한 고민이 먼저" 글로벌사업본부 운영최적화팀 전성배

현재 담당하고 있는 업무에 대해 소개해 주세요.운영최적화팀은 원유 도입에서부터 제품 판매까지 전사의 밸류체인을 최적화하는 역할을 맡고 있습니다. 또한 정제 마진 및 원가 변동에 따른 리스크를 분석하고 관리함으로써 회사의 수익성을 높이고 있습니다. 저는 이 중에서 각 제품 마진의 변동성을 관찰하고 그 리스크를 적정 수준으로 관리하는 업무를 담당하고 있습니다. 국제 시장의 변화를 분석하여 대응함으로써 회사의 손익을 증진시키고 안정적인 경영이 가능하도록 도움을 주고 있습니다.입사를 준비하고 있는 후배들에게 해주고 싶은 말은?흔히 말하는 ‘취준생’의 기간이 저에게는 자신을 돌이켜 볼 수 있는 가장 좋은 시간이었습니다. 나의 장점은 무엇인지, 내가 다른 사람들에게 어떻게 비춰질지 등 자기 자신에 대해 가장 고민을 많이 하고 해답을 찾으려 애썼습니다. 이를 통해 자기소개서와 면접에서 제 장점을 충분히 어필 할 수 있었고 그것이 좋은 결과를 만들었습니다.후배님들 모두 20년 이상의 긴 시간 동안 정말 열심히 살아왔을 것입니다. 이제는 그것을 다른 사람들에게 어떻게 보여주냐의 싸움입니다. 여러 측면에서 자신을 한 번 더 돌아보고 어떻게 어필 할 수 있을 지 고민해 보시기 바랍니다. 이를 위해 친구, 가족 등 가까운 사람들에게 본인에 대해 물어보는 것을 추천하고 싶습니다. 후배님이 모르고 있던 후배님의 장점을 알 수 있을 것입니다. 이를 통해 다른 지원자와 차별화되는 자신만의 이야기를 풀어낼 수 있다면 반드시 원하는 결과를 얻게 될 것입니다. 마지막으로 어떠한 상황에서도 자신감을 잃지 않으신다면 분명 좋은 결과를 얻을 수 있을 것입니다. 화이팅!#현대 #현대그룹 #현대오일뱅크 #운영최적화팀 #직무정보 #직무소개 #선배들의이야기 #현대오일뱅크채용 #현대오일뱅크공채 #구성원인터뷰
조회수 1272

이곳을 이렇게 바꿔주세요.(빙빙돌려 설명하지 않기)

이젠 좀 질릴 정도로 진부한 소재가 되었습니다. 그런 거 있잖아요. 너무 밝지 않은 화이트톤, 빈티지하면서도 뭔가 개성이 살아있는 느낌..등의 표현말예요. 그래서 오늘은 서론을 길게 끌지 않겠습니다. 짧게 정리하고 바로 넘어갈께요. 1. 클라이언트가 디자이너의 용어를 알 필욘 없습니다.2. 하지만 그게 아무말이나 하란 얘긴 아닙니다.네, 사실 핵심은 이겁니다. 명도니 채도니, 레이아웃이니 이런 용어들 안쓰셔도 됩니다. 모르는 게 당연합니다. 디자이너들도 클라이언트가 이런 용어 모른다고 막 불평하고 답답해하고 그러면 안됩니다. 어차피 서로 일하는 분야가 다른 것일 뿐입니다. 디자이너도 클라이언트 업계에서 쓰는 용어 모르는 건 매한가지니까요. 다만, 서로 뭔가 말을 할 때 '명확하게' 말할 필요는 있습니다. 지금부터 땋땋 찝어드릴 께용. 오늘은 짤이 없어요!!! 텍스트만 재미없게 우르르 써놓을 거예요.ㅋㅋ왜냐면 오늘은 딱히 짤이 어울리지 않는 쒸익쒸익 내용이거든요!1. 채도는 색의 진하기를 말합니다. '진하게/연하게' 라고 표현합니다. 2. 명도는 밝기를 말합니다.(색과 관계가 없습니다.) '밝게/어둡게' 라고 표현합니다.3. 색상은 '계열'이란 말로 표현합니다. 빨강계열, 노랑계열이라고 말합니다. '느낌' 이 아닙니다. 빨강느낌, 노랑느낌...이 아닙니다. 노랑느낌은 어떤 느낌인가요. 뭔가 간이 안좋아보이는 느낌이랄까. 느낌 쓰지 않습니다. 느낌싫어. 느낌아니예요. 4. 색앞에 형용사는 하나만 붙입니다! .(진한 빨강 / 연한 빨강 / 밝은 빨강 / 어두운 빨강) 이렇게 씁니다. 두 개 붙이지 않습니다. '어두운데 밝은 빨강 느낌....' 이렇게 말하지 않습니다. 5. 한 문장에 하나씩만 지시합니다. 이 로고 지워주시고, 타이틀 좀 크게 해주고...어쩌고.이렇게 기차놀이 하지 않습니다. 반드시 넘버링을 하고, 각 번호엔 하나씩만 지시합니다. 1)상단 로고 지워주세요.2)타이틀 글자 조금만 키워주세요.3)이미지에 선을 굵게 해주세요. 등등6. ~했으면 좋겠습니다..이런 어미는 되도록 피하세요.물론 예의차리려고 하는 말인건 알지만, 괜히 문장만 길어지고 난잡해집니다. 해라! 마라! 정확하게 끝맺음 해주시는 게 좋아요. 좀 강해보이기도 하구요. 이를 테면 이런 식입니다.어려우시겠지만, 이미지 부분을 조금 더 밝게 바꾸면 어떨까 싶은데, 디자이너님 생각은 어떠세요? 너무는 말고 약간만 밝게해서 글자가 조금 잘 보였으면 해서요 ㅎㅎㅎ..부탁드리겠습니다.ㅠㅠ이렇게 안하셔도 됩니다.- 글자가 잘보이도록 이미지 밝기 조정 부탁드립니다.라고 말하시면 됩니다.7. 위에서부터 말해주세요. 상단부터 수정사항을 순서대로 말해주세요. 위 아래 위위 아래 와리가리 하다보면 뭔가 엉망진창이 되거나 기껏 맞춰놓은 무언가가 또 틀어지곤 합니다. 8. 큰 것부터 작은 순서대로배경/이미지/전체 톤/컨셉이 바뀌는 게 먼저입니다. 자잘자잘한 텍스트 수정이나 굵기 수정 이런건 큰 것들이 맞춰진 뒤에 하는 겁니다. 보통 피드백줄 때 의식의 흐름대로 막 넘버링하면 마구 섞이기 마련입니다. 일단 수정 할 걸 다 나열한 뒤에 순서대로 넘버링해주세요. 이건 비단 클라이언트 뿐 아니라 디자이너도 마찬가집니다. 뭔가 할 말이 있거나 요청사항이 있다거나..또는 시안전달시에 설명을 덧붙일 때도 큰 틀부터 세부사항으로 말하는 겁니다.9. 미리 드렸어야 하는데..란 말은 하지마세요.미리 주셨어야 하는 건 미리 주셔야 합니다. 이를테면 컨셉 레퍼런스라던가, 바뀐 텍스트라던가, 꼭 써야만 하는 이미지파일 등등 말입니다. 혹시나 다른 팀에서 받아야 하는데 다른 팀원이 나를 견제하는 중이라서 파일을 안넘겨주고 있다면 "이러저러해서 이틀정도 늦어질 것 같아. 그 전에 다른 작업부터 부탁드린다."이런 식으로 언지가 있어야 합니다. 물론 나도 당신이 이기길 바라기 때문에 이틀정도는 충분히 기다려드릴 수 있습니다. 승전보와 함께 파일을 주시기 바랍니다.10. 빈티지한 느낌 어쩌고 이런 말 하지마세요.그런 컨셉을 얘기하는 거라면 차라리 본인이 예쁘다고 생각했던 이미지파일을 주세요. 이런 컨셉이면 좋을 것 같다~ 라고. 하나만 주면 눈치채기가 좀 어렵습니다. 보통 2,3개 정도는 받아봐야 그 레퍼런스들의 공통점을 분석할 수 있거든요. 그러니 서로 피곤하게 '세련되면서도 인간미가 있는 느낌...' 이런 우주적인 표현말고 그냥 그림으로 얘기하도록 합시다.11. 자꾸 모순된 표현을 하는 이유.'밝은데 탁한 느낌, 어두운데 너무 어둡진 않은 느낌' ....얼핏보면 말도 안되는 오퍼같지만 이게 무조건 잘못된 건 아닙니다. 예를 들면 기괴한데 아름다운 느낌. 팀 버튼이랄지, 길예르모 델토로 감독의 영화들을 떠올려보시면 쉽게 이해가 되시죠? 어둡고 음침한 배경에 인간미넘치는 괴물과 꽤나 희망적인 사랑을 얘기하고 있잖아요. 또는 쓸쓸하면서도 찬란한 느낌도 가능은 하겠네요. 총천연색의 오렌지빛 배경에 쓸쓸한 피사체 하나랄까요. 근데 이것들을 가만 보면, 공통점이 있습니다. 그렇죠. 배경의 톤은 하나입니다. 그 내부의 사물이나 인물이 부가적인 분위기를 만들어내는 거죠. 셰이프오브워터란 영화에서 사랑얘기를 빼버리면 그냥 인어괴수 영화가 되버리고 맙니다. 크리스마스의 악몽에서도 잭이 뭔갈 깨닫는 씬이 없었다면 그냥 악몽 그 자체로 끝나버릴 이야기에요. 우리가 흔히 얘기하는 '빈티지하지만 세련된' 느낌이란 건 굳이 풀자면 배경은 빈티지하지만 그 안에 오브젝트는 세련된 느낌일 거에요. 1980년대의 올드한 집이 배경이지만 내부의 소품들은 굉장히 고풍스럽고 고급진 금장이 군데군데 박힌 상태죠. 네, 무슨 말인지는 잘 알겠습니다. 다만 표현을 저렇게 해버리면 안되는 거예요. 앞으로 굳이 저런 식의 주문을 해야한다면 배경은 어떻게 / 사물,사람은 어떤 상태를 나누어서 얘기해주세요. 그냥 앞뒤 다 잘라버리고 한꺼번에 얘기해버리면 굉장히 난해해지고 맙니다.오늘의 이야기 끝 :) 
조회수 4040

소셜 네트워크 분석(Social Network Analysis)이란?

소셜 네트워크 분석은 이벤트 로그 데이터를 작업자(Resource), 사회적 관점에서 분석하는 것입니다. 이벤트 로그의 속성 중에 누가 수행했는지를 나타내는 작업자(Resource) 속성이 있습니다. 이러한 속성을 사용하여 간단한 형태의 소셜 네트워크 분석을 할 수 있습니다. 소셜 네트워크 분석을 위한 방법에는 작업자-액티비티 매트릭스(Resource-Activity matrix), 핸드오버 매트릭스(Handover of work matrix) 등이 있습니다.작업자-액티비티 매트릭스(Resource-Activity matrix)는 누가 무엇을 하고 있는지에 대한 기본 인사이트를 제공해 줍니다. 작업자-액티비티를 작성하면 한 작업자가 특정 액티비티를 몇 번 수행했는지 알 수 있습니다. [그림 1] 이벤트 로그 예제[그림 2] 작업자-액티비티 매트릭스(Resource-Activity matrix)[그림 1]의 이벤트 로그를 이용하여 [그림 2]와 같은 작업자-액티비티 매트릭스를 작성할 수 있습니다. 작업자-액티비티 매트릭스에서 한 셀의 값은 케이스당 해당 액티비티를 특정 작업자가 수행한 비율을 나타냅니다. 예를 들어 [그림 2]의 액티비티 a열의 내용을 보면 a열의 총합 1(0.3+0.5+0.2)은 케이스당 액티비티 a가 평균 1회 발생하는 것을 의미하고, 액티비티 a는 오직 Pete, Mike, Ellen만이 작업하고 그 비율은 Pete 30%, Mike 50%, Ellen 20% 임을 알 수 있습니다. 액티비티 e의 경우에는 Sara만 수행하고, 케이스당 평균 2.3회 수행되는 것을 의미합니다. 즉 액티비티 e는 한 케이스당 여러 번 발생하는 것을 알 수 있습니다. 작업자 관점에서 보면 Sean은 액티비티 b만 수행하고, Sara는 e와 f만 수행하고 있습니다.핸드오버 매트릭스는 작업이 어떻게 전달되었는지에 초점을 맞추어 분석합니다.[그림 3] 핸드오버 매트릭스(Handover of work matrix)[그림 1]의 이벤트 로그로 [그림 3]과 같은 핸드오버 매트릭스를 만들 수 있습니다. 핸드오버 매트릭스에서 한 셀의 값은 한 작업자가 다른 작업자에게 작업을 전달하는 비율입니다. 예를 들어 Pete가 자기 자신에게 작업을 전달하는 비율, 즉 연속해서 작업을 하는 경우는 케이스당 평균 0.135회 발생하고 있습니다. 이는 Pete가 여러 작업을 수행하고 있어 자기 자신에게 작업을 전달하는 것일 수도 있고, 재작업으로 인한 반복 업무가 나타나는 것일 수도 있습니다. Sara가 Mike에게 업무를 전달하는 경우는 케이스당 평균 1.475회 발생하여 두 사람은 업무 연결도가 상당히 강하고 두 작업자 사이에 강한 Causality 관계가 있을 가능성이 높습니다.[그림 3]의 핸드오버 매트릭스를 기반으로 한 소셜 네트워크를 구해 보면 [그림 4]와 같이 표현할 수 있습니다. [그림 4] 핸드오버 매트릭스 기반 소셜 네트워크작업자와 작업자를 연결하는 화살표는 작업을 넘겨주는 관계를 표시하며, 화살표의 두께는 작업 전달 빈도를 나타냅니다. Mike와 Sara의 경우 서로 두꺼운 화살표로 연결되어 있어 두 작업자 간의 업무 전달 빈도 수가 높고 업무 연관 관계가 높음을 알 수 있습니다. Sara의 경우 모든 작업자와 연결되어 있어 핵심 업무 수행자일 수도 있고 모든 프로세스의 공통 업무를 담당하고 있을 수도 있습니다.핸드오버 매트릭스는 소셜 네트워크를 만드는 많은 방법 중 하나입니다. [그림 4]의 핸드오버 매트릭스 기반 소셜 네트워크에서 같이 일하는 그룹을 같은 노드 색깔로 표시하고 노드의 크기를 특정 작업자가 수행한 작업 빈도 수로 표시하면 또 다른 정보를 얻을 수 있습니다. 또한 케이스 기반으로 소셜 네트워크를 그릴 경우 같은 케이스를 수행하는 사람들의 업무 관계를 파악할 수 있습니다.이벤트 로그는 업무 프로세스 내의 업무 관계에 대해 다른 관점을 만드는 많은 정보를 제공합니다. 누가 가장 중심 업무를 수행하는지, 같이 일하는 그룹은 누구인지, 업무 상관성은 누가 높은지를 알 수 있습니다. 따라서 프로세스에서 작업자의 행동을 분석할 수 있으며 이는 종종 개선된 업무 방식에 대한 단서를 제공합니다. 소셜 네트워크 분석으로 다양한 인사이트를 얻기를 바랍니다.#퍼즐데이터 #개발팀 #개발자 #개발후기 #인사이트
조회수 964

중소기업을 위한 비대면 서비스 바우처 사용처 Best 4

요즘 일 잘하는 중소기업에서는 빠른 성과 달성과 업무 효율을 위해 여러 서비스를 이용하는데요. 오늘은 중소기업에서 사용하면 좋은 서비스를 추천해 드릴게요. 비대면 서비스 바우처 사용처를 아직도 고민하고 계신다면, 이 글을 주목해주세요!1. 플로우플로우는 PC와 모바일의 동기화를 통해 프로젝트 중심으로 협업 및 커뮤니케이션을 할 수 있는 올인원 플랫폼이에요. 내부 직원을 물론 협력사 파트너와도 프로젝트별로 쉽게 초대해서 협업이 가능합니다. 메신저는 물론 프로젝트 일정관리, 작업관리, 파일공유 등의 기능을 사용할 수 있고, 클라우드 방식의 월 임대형 서비스와 중견/대기업을 위한 사내 서버 설치형 서비스를 모두 제공하고 있어요. 최근에는 비대면 서비스 바우처 우수사례로 뽑혀 바우처로 플로우를 많이 이용하고 계세요.클릭 시 비대면 바우처 우수 사례집으로 연결됩니다.2. 채널톡웹채팅, 카카오톡, 네이버 톡톡 등 모든 상담 관련 서비스를 한 곳에서 관리할 수 있는 올인원 서비스에요. 전화가 아닌 채팅 기능을 통해 물리적인 공간과 시간의 제약을 받지 않고, 제품 및 서비스에 대한 상담이 가능해요. 실시간 마케팅을 실시할 수도 있어요.3. 경리나라중소기업의 번거로운 경리업무를 금융과 연동해 불필요한 업무를 획기적으로 줄여주는 서비스에요. 수기 혹은 엑셀로 증빙을 하거나 관리하던 모든 경리 업무들을 한 곳에서 자동화로 처리할 수 있는 서비스입니다. 세금계산서, 영수증, 은행/카드 거래내역 등의 모든 증빙 및 영수증을 클릭 한번으로 자동 수집 후 바로 세무사에게 전달할 수도 있고, 월/분기/년간 단위별 관리가 가능해요.4. 모두싸인아직 종이 계약서를 우편으로, 퀵으로 주고 받으시면서 계약서를 작성하시나요? 모두싸인은 번거로운 종이 계약을 대신할 수 있는 온라인 계약 서비스입니다. 비대면 시대에 계약도 이제는 온라인으로 진행할 수 있어요. 종이계약과 법적효력이 동일하다고 하니 안심하고 사용해도 될 것 같습니다. 최근에는 과학기술정보통신부에서 디지털 뉴딜 우수사례로 선정되었어요.중소기업이 알아야 할 비대면 서비스 바우처 주의사항1. 한 기업당 최대 200만원 까지비대면 서비스 바우처의 수요기업으로 선정된 기업들은 사용처를 선택할 수가 있는데요. 한 기업당 최대 200만 원까지만 결제가 가능해요. 즉 최소 2개 이상 서로 다른 공급기업의 서비스를 선택해야하죠. 최대 400만원까지 가능하니 2개 이상의 기업을 선택할 수 있어요! (서비스 이용금액의 90% 지원, 10%는 자기부담금)예를 들어 플로우에서 200만원을 결제하고, 경리나라에서 100만원, 채널톡 100만원 결제를 하실 수 있어요.2. 선정된 날로부터 60일 이내 결제K비대면 바우처 플랫폼에서 ≪기업정보관리≫ 메뉴로 들어가면 심사결과를 확인할 수 있는데요. 승인이 되었다면 바우처 신청 탭에서 바우처를 신청하실 수 있습니다. 주의 하실 점은 선정된 날로부터 60일 이내 1회 이상 결제가 되어야 하고, 90일 이내에 전액을 사용해야 수요기업 선정이 취소되지 않아요!비대면 서비스 바우처로 플로우 사용하기플로우 바우처 관련 상담하기
조회수 1264

EOS Smart Contract 를 위한 준비

EOS Smart Contract 를 위한 준비와 토큰 발행 그리고 C++를 활용해 토큰의 간단한 기능을 개발해 보겠습니다.환경 구성 및 지갑 생성은 SAM 님의 아래 2글을 참고해 주시기 바립니다.EOS — 설치 및 실행 (1/2)EOS — 동작구조 및 환경설정(2/2)지갑 생성하기SAM 님의 포스트를 참고 하셨다면 아마 다음과 같이 ‘default’ (별도의 이름을 지정하지 않았을 시) 지갑을 생성 하셨을 겁니다.이 지갑을 사용하여 계정을 Create 한 후 Key 를 Import 하겠습니다.Key 생성하기$ cleos create key위 명령을 실행 하시면 다음과 같은 화면을 얻을 수 있습니다.create key 명령의 결과**주의 : Private Key는 Public Key의 소유를 증명하는 중요한 개념으로 절대 타인에게 노출하면 안됩니다.AdditionalKey 생성 후 지갑에 import 하기 귀찮으시다면 생성된 지갑에서 바로 Key 를 생성하셔도 됩니다.$ cleos wallet create_key위와같이 key가 생성 됩니다. 하지만 public key 만 보이기 때문에 하단 명령 입력 후 지갑 key를 입력하면 private key를 확인할 수 있습니다.$ cleos wallet private_keys지갑에 Key import하기지갑은 Public Key — Private Key를 저장하는 저장소 입니다. 생성된 키를 지갑에 저장하기 위해 다음과 같은 명령어를 입력합니다.$ cleos wallet import-n : 옵션을 사용하면 지갑의 이름을 지정합니다. 지정하지 않는다면 기본 생성된 default 지갑으로 지정됩니다.위 명령을 입력 하면 key 가 임포트 되었다는 결과를 확인 할 수 있습니다.** 만약 지갑을 Unlock 한 상태가 아니라면 ‘private key: Error 3120003: Locked wallet’ Exception 이 나옵니다.unlock 을 위해 다음 명령을 실행한 후 wallet 생성시 저장했던 Key를 입력하여 Unlocked 상태로 만들어 줍니다.$ cleos wallet unlock password: Unlocked: default(Optional) 지갑에 저장된 Key 리스트 확인다음 명령어를 입력하여 지갑에 key 가 잘 import 됐는지 확인합니다.$ cleos wallet keys계정 생성eosio.token 이라는 이름으로 계정을 생성하도록 하겠습니다.** 지갑과 Key 그리고 계정에 관해서는 Hexlant 미디움에 게재될 예정입니다.$ cleos create account eosio eosio.token EOS63kstp8kthzJY3rAotp1LAxUDbWk4MywReG578R2ddbktrDHYKcreator : eosioaccount name : eosio.tokenowner key : 지갑에 import 된 keyAdditional본 포스팅은 local 환경에서 빌드 후 System Contract 들이 적용되지 않은 상황을 가정하였습니다. 만약 Public Network 환경에서 접속 시 eosio 와 eosio.token을 사용할 수 없습니다.또한 계정이름은 다음과 같은 규칙을 따릅니다.- 12문자- 12345abcdefghijklmnopqrstuvwxyz 만 사용 가능** 만약 ‘Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations’ 에러 발생 시 eosio 에 대한 key 를 지갑에 import 해야 합니다.eosio 에 대한 정보는 다음과 같습니다.public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CVprivate key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3위 과정을 모두 마쳤다면, EOS 지갑과 키 그리고 계정에 대한 권한을 모두 가지고 있는 상태가 됩니다. 다음 포스팅에서는 이 계정을 사용 하여 Token 을 발행하는 방법을 알아보도록 하겠습니다.감사합니다#헥슬란트 #HEXLANT #블록체인 #개발자 #개발팀 #기술기업 #기술중심

기업문화 엿볼 때, 더팀스

로그인

/