사내 ISUCON 기술 공개

6193 단어 Firebaseisucon
평소SkyWay의 개발·운용@iwashi86.2015/7/15(금), @renjikari와 합작하여 NTT통신의 한 부서에서 사내 ISUCON을 개최하였다.
본 기사는 회사 내 Isucon을 개최할 때 고려한 내용, 노력한 내용, 그 결과 등을 소개한다.
당사에서 Isucon을 개최하고 싶다면 본 기사의 내용을 참고할 수 있을 것 같습니다.

개최 목적


주로 다음과 같은 두 가지를 목적으로 한다.
  • 엔지니어 기술력 향상
  • 엔지니어의 동력 향상
  • 원가 목적을 달성하기 위해 본사는 통신사이기 때문에 개최 방침과 준비 사항에 약간의 공을 들였다.

    개최 방침


    저는 ISUCON이 주로 웹 클래스의 Infla 엔지니어 응용 엔지니어 중에서 지명도가 높다고 생각합니다. 그러나 우리는 다양한 분야에서 업무를 하고 웹 클래스 이외의 엔지니어(예를 들어 인터넷 엔지니어, 클라우드 엔지니어)도 많습니다.또 웹과 기업의 업무 영역을 보면 기업을 주축으로 하는 엔지니어도 많다.
    따라서 사내 아이코스를 열었더라도 사회적으로 여러 곳에서 열리는 사내 아이코스와 같은 효과가 있을지는 미지수다.따라서 다음 지침을 따르기로 했습니다.
    "최소한의 노동력으로 우선 개최해 보자.
    이후 목적을 달성했는지 되돌아보고 다음 일을 논의한다. "
    위에서 설명한 대로 Build/Measure/Learn) 형식으로 진행하기로 결정했습니다.

    결과는 어떻습니까?


    먼저 결론부터 말하자면, 나는 애초에 열거한 목적이 이미 달성되었다고 생각한다.
    그 이유는 다음과 같습니다.
  • "고속화 및 최신 웹 기술에 대한 새로운 지식 획득"
  • "자신의 기술력이 부족하다는 것을 알게 되어 더욱 공부해야 한다는 것을 깨달았다."
  • "사전 학습회를 포함해서 Isucon 입문의 기회를 만들어서 정말 좋아요"
  • 기술력과 동기 두 가지 측면에서 볼 때 결과는 목표와 같다.
    또 엔지니어 유형의 관점에서 보면 참가자들은 대부분 웹과 엔지니어들이지만 인터넷 엔지니어, 클로드 엔지니어 등 다양한 엔지니어들이 참석해 적극적인 논평을 내놓았다.개최 방침 부분에는 効果があるのか、未知数 기재돼 있지만 결과적으로는 어느 정도 효과가 있다.

    개최를 위해 준비를 했습니다.


    회사 내 ISUCON 개최를 위해 준비해야 할 일은 여러 가지가 있지만 이번 개최가 특히 중요한 곳을 골라 소개한다.

    문제 출제 정보


    이번에는 최소한의 노동력으로 개최하겠다는 방침에서 출발하여 과거의 문제를 활용하기로 했다.과거의 문제
  • ISUCON 공식
  • pixiv 내부 ISUCON
  • 하지만 이번에는 [2]의 픽사 문제를 활용하기로 했다.출제 수준도 적당하고 구축용 Ansible도 제공된 것이 선택의 이유다.(피크시프 씨, 고맙습니다!)

    자기 손으로 한 일


    과거 문제를 활용하기로 했지만 일부 내용을 수정했다.다음은 두 가지 주요 수정점을 총결한다.

    [1] Cloudn으로 변경


    원래 저장소는 AMI를 기반으로 제공되었으나 본사는 여러 개 클라우드 서비스 를 제공했고 그 중에서도 Cloudn 를 사용했다.(주석: Cloudn은 네트워크 전송량에 따라 요금을 받지 않기 때문에 데이터가 많든 많든 정액이다!)

    [2] 포털 사이트 독립 개발


    원시 저장소는 포털의 원본 코드도 제공했지만 해결해야 할 문제가 있어 포털을 평가하기 위해 임시 저장소를 개발하기로 했다.
    이번 문제는 픽시브의 물건을 이용하는 것이기 때문에 문호도 비슷한 디자인의 방침에 따라 개발됐다.(참조: Isucon 6 출제팀 사내 Isucon 개최!아미도 공개!!
    결과는 아래 사이트입니다.

    우리도 최소한의 노동력으로 개최하겠다는 방침 때문에 문호용 실례는 독자적으로 구축하지 않고Firebase 데이터 저장으로 이용하고 실례는 구축하지 않는 방향으로 추진했다.
    데이텀에서 드로잉으로 실행되는 프로세스는 다음과 같습니다.

    Firebase의 기능은 거의 실시간으로 점수를 업데이트할 수 있다.
    또 포털 사이트의 기준 집행(및 관리 대기열)에 대해서는 이번에는 실시하지 않고 경기자 실례에서 전용 명령을 사용하면 기준 형식을 적용한다.
    경품
    여기 읽으신 분들께 드리는 사은품입니다. 위 포털사이트GitHub에 공개됐습니다.
    Firebase 프로젝트를 만드세요. XXXX.firebaseio.com XXX 부분을 교체하면 바로 실행할 수 있습니다.
    데이텀을 실행한 후 다음 JSON 전원을 켜서 데이텀 명령에 처리를 추가합니다https://XXXX.firebaseio.com/teams/:チーム名.json.(curl과 httpie 등 좋아하는 클라이언트는 버리면 문제없다)
    HTTP로 게시할 때 JSON 형식
    {  
      "pass":true,
      "score":18000,
      "success":1434,
      "fail":0,
      "messages":[],
      "timestamp":{  
        ".sv":"timestamp"
      }
    }
    
    기타 자세한 내용은 GitHub 측 README입니다.md 를 참조하십시오.

    다음을 위한 개선점


    규모는 작지만 실제 개최로 개선점도 생겼다.그중 4개를 소개합니다.

    팀이 아니라 개인도 참가할 수 있다


    이번에는 개인 항목이라면 같은 개인 항목의 다른 멤버들과 무작위로 팀을 구성한다.하지만'모르는 멤버와 조합이 불안하다'는 의견도 있었다.물론 회사 내에서도 팀 구성 경기 등 경기의 즐거움이 있지만 이번 ISUCON의 가장 큰 목적 중 하나는 기술을 향상시키는 것이기 때문에 다음에 개인적인 참가(비팀) 허용을 논의하고 싶습니다.

    엔지니어의 편차를 줄이다


    이번에는 다양한 엔지니어들이 참가했지만 웹과에 가까운 엔지니어들의 참가율이 가장 높았다.다음에는 웹 학과 이외의 엔지니어의 참가율을 높이고 싶습니다.ISUCON에서는 데이터베이스와 같은 중간부품을 조정해야 하고 웹과를 제외한 엔지니어들도 싸울 수 있는 부분이 많다.(그리고 이 기술은 많은 엔지니어들에게 필요한 공통 기술이다)
    회사 내에서도 ISCUON 자체의 인지도가 그리 높지 않기 때문에 ISUCON의 사전학습회 등을 통해 ISUCON을 널리 알리고 엔지니어의 편차를 줄여 많은 구성원의 기술과 동력을 향상시키는 데 기여하고 싶다.

    경기에 사용할 방을 분산, 확대 / 원격 참가 허용


    가까운 거리에 있으면 다른 팀의 목소리가 들리기 때문에 신경 쓰는 참가자도 있다.다음 번 이후에는 넓은 방을 이용하고 방을 분산하며 원격 참가를 허용하는 방안을 논의할 예정이다.

    자체 출제 문제, 기준 표기


    문제 출제와 벤치마크 제작은 운영자의 기술 향상에 유용하다.물론 제작을 위해서는 많은 자원이 필요하고 운영자도 자원에 대한 과제가 있지만 다음 부터는 자제에 대해서도 생각해 보고 싶다.

    마지막


    이번에는 "사내아이수콘 하자!"이후 기획토론, 각종 조정 등 모든 공사를 포함해 약 한 달 만에 개최할 수 있다.본 보도에서 말한 바와 같이 아주 좋은 결과를 얻었습니다. 개선점에 열거된 프로젝트와 함께 다음에도 개최하고 싶습니다.
    본 기사에는 포함되지 않았지만 이번에도 퍼포먼스 조정 개요를 설명하는 사전학습회 실시

    좋은 웹페이지 즐겨찾기