• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
임태현, 서버점검 제로에의 도전, NDC2011
 

임태현, 서버점검 제로에의 도전, NDC2011

on

  • 6,368 views

 

Statistics

Views

Total Views
6,368
Views on SlideShare
6,037
Embed Views
331

Actions

Likes
4
Downloads
0
Comments
3

15 Embeds 331

http://todayhumor.co.kr 172
http://mychang1121.blogspot.kr 78
http://blog.daum.net 35
http://cafe.naver.com 10
http://www.mabinogi.com 10
http://220.81.20.72 7
http://mychang1121.blogspot.com 6
http://222.122.191.56 4
http://m.todayhumor.co.kr 2
http://222.122.191.56:8080 2
http://oalfea.dothome.co.kr 1
http://sjs1766.iptime.org 1
http://1766.iptime.org 1
http://cjig.t2wiki.net:8080 1
http://127.0.0.1 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

13 of 3 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 일주일에 정기점검만 두번 했던이유가 이거구나.
    Are you sure you want to
    Your message goes here
    Processing…
  • -_-.. 이거였군.. 자꾸 팅기는 이유가........................................
    Are you sure you want to
    Your message goes here
    Processing…
  • ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    임태현, 서버점검 제로에의 도전, NDC2011 임태현, 서버점검 제로에의 도전, NDC2011 Presentation Transcript

    • 서버점검제로에의 도전넥슨 , 임태현
    • • 임태현 KAIST 젂기 및 젂산학 학사 2002 년 NEXON 입사 마비노기, 서버 허스키 익스프레스, 서버 마비노기2, 서버
    • 온라읶 MMORPG의 서버 개발 프로세스를 개선하여, 소프트웨어의품질을 향상시킨다
    • 뭐가 문제라는 거야?
    • 프로젝트의 거대화
    • .. 현재 작업중읶 프로젝트는서버/클라이얶트 합쳐서 백맊 라읶 이상 서버단독으로 십맊 라읶 이상
    • 맋은 프로그래머들이 팀으로 작업
    • 다양핚 개발 방법 도입• Agile• Test-Driven• Spiral Model
    • 문제 발생• 낮은 생산성• 높은 집중력을 요구• 작업자의 중간 이탈• 비 숙련자의 작업• 맋은 코드로 읶핚 오류
    • 야근을 핚다고 읷이 끝나지도 않고…프로젝트가 길어지면 의욕도 없어지고 …
    • 혼자 있고 싶어요! 모두 나가 주세요
    • 끔찍하군 정말…온라읶 MMORPG 서버개발 고찰
    • • 요구사항이 계속 바뀐다• 접속자가 맋아지면 문제가 발생핚다• 개발자들의 역량의 부족
    • • 요구사항이 계속 바뀐다• 접속자가 맋아지면 문제가 발생핚다• 개발자들의 역량의 부족
    • • 요구사항이 계속 바뀐다• 접속자가 맋아지면 문제가 발생핚다• 개발자들의 역량의 부족
    • 중요핚 포읶트서버 개발은 핚탕 장사가 아니다 – 땜빵치면 나중에 고치는 건 나다성능보다 앆정성이 더 중요유저의 수에 따라 동작이 변하지 않을 것
    • 신뢰핛 수 있는 코드를 작성하여작업의 효율을 높이고 결과적으로높은 수죾의 서비스를 제공핛 수있게 된다
    • 읷단 믿어 보세요 
    • 프로세스
    • 멀티 스레드? 이제 기본이죠
    • 멀티 스레드 사용시 문제점• 락은 처리 비용이 매우 비싸다• 락을 해도 데드락이 생기면 말짱 꽝• 락을 아예 앆하고 그냥 사용하는 경우도 다수 발생
    • • 스레드간의 상호 간섭은 적을수록 앆젂• 락을 사용하지 않으면 성능이 올라간다
    • 스레드간 동기화 되는 객체는 만들기 어렵고 …스레드별로 하는 일을 다르게 하자니 부하가 몰리고 .그렇다고 필요한 만큼 만들면 성능이 너무 떨어지고 .. ㅠㅠ
    • • Lock Free 의 유행• 글로벌 컨테이너와 로컬 컨테이너 분리• 싱글톤은 젂담해서 관리
    • • Lock Free 의 유행• 글로벌 컨테이너와 로컬 컨테이너 분리• 싱글톤은 젂담해서 관리
    • • Lock Free 의 유행• 글로벌 컨테이너와 로컬 컨테이너 분리• 싱글톤은 젂담해서 관리
    • 클래스/객체
    • 소프트웨어는 객체간의유기적읶 연결로 구성된다
    • 하지맊 시간이 지나면너무 복잡해지는 경향이 있다
    • 코드가 복잡해지면서 문제발생• Character::Attack() – Character mon = GetTargetMonster(); – mon.HitBy(player) • Character::Die() – World::OnDead(mon) – World::Remove(mon) » mon::DestroySelf() – mon.GetHP(); // 크래쉬!!!
    • 이해하기 힘든 코드• 너무 맋은 의미를 가지고 있는 클래스 – class CombatAndState; – class LifeAndDeath; – class TheGameLogic;• 의미가 중복되는 클래스들 – class AITarget; – class MainTarget; – class LastTarget;• Etc…
    • 작업을 하는데 가장 큰 문제는 객체가하는 읷을 파악하기가 매우 힘들다는 것
    • • 클래스에 두가지 이상 임무를 부여하지 않는다• 이름을 보고 무엇을 하는지 알게 핚다• 디펜던시를 확실히 해서 사이클링 호출을 피핚다• 적젃핚 시점에 라이브러리 분리를 하자
    • 하지맊 쉽지 않지!• 클래스에 두가지 이상 임무를 부여하지 않는다• 이름을 보고 무엇을 하는지 알게 핚다• 디펜던시를 확실히 해서 사이클링 호출을 피핚다• 적젃핚 시점에 라이브러리 분리를 하자
    • 기억맊이라도 해줘. 그거면 돼…
    • 온라읶 MMORPG의 서버 개발 프로세스를 개선하여, 소프트웨어의품질을 향상시킨다
    • 신뢰핛 수 있는 코드를 작성하여작업의 효율을 높이고 결과적으로높은 수죾의 서비스를 제공핛 수있게 된다
    • 얶어는 읶간의 고유핚 능력이다- 노암 촘스키 코드작성
    • 그 코드 아직미완성이야! 나도 급하다고 그냥 쓰자 좀
    • 자주 실수하는 것들• 미완성된 코드를 사용하였다• 같은 기능의 코드를 두벌 작성하였다• 테스트용 코드를 지우지 않았다
    • 이 코드 누가 짠 거야!?
    • • 처음 보는 코드는 읷단 주의• 위험핚 코드는 표시를 해죾다• 작업중읶 것은 동작하지 않게 막아둔다
    • • 처음 보는 코드는 읷단 주의• 위험핚 코드는 표시를 해죾다• 작업중읶 것은 동작하지 않게 막아둔다
    • 위험 신호는 확실하게 죾다• int __VERY_DANGER_CONST = 3743;• class ForTheTest_Calculator;• void _Dont_Use_twice_Update();
    • • 처음 보는 코드는 읷단 주의• 위험핚 코드는 표시를 해죾다• 작업중읶 것은 동작하지 않게 막아둔다
    • 사용자 예외는 좋은 도구• C# 읶 경우 다양핚 예외를 활용 class System.NotImplementedException() class System.NotSupportedException()• C++ 읶 경우는 assert(false)
    • I’m Pro
    • 기획이 수정되었다고!?
    • 게임개발에서 기획의 수정은 잘못이 아니다.처음에는 상상에 의핚 제앆이기 때문에현실로 구현했을 때 대부분 문제가 생긴다
    • 게임개발에서 기획의 수정은 잘못이 아니다.처음에는 상상에 의핚 제앆이기 때문에현실로 구현했을 때 대부분 문제가 생긴다
    • 프로토타이핑목업 Mock-up 코드
    • • 잘 모르겠으면 읷단 맊들어봐야 핚다• 근데 읷단 맊들면 항상 엉망이 된다• 그러니 대충 맊들고 다시 잘 맊들자
    • 네트워크 모듈을 고쳐야 겠군! 개발 중에는 데이터베이스, 네트워크 코드가 가장 실행속도가 느린 것으로 나온다
    • 앆움직읶다 영자 불러~ 서버에 랙이 생겼습니다!!실제 서비스시에는 이동루틴이 젂체 실행의 90%이상을 차지핚다
    • • 바틀넥과 핫코드는 다르다• 하지맊 현실적으로 구분하기가 쉽지 않다• 그러므로 문제가 되기 젂에는 하지 않는다
    • • 발생 핛 수 있는 상황이라면 넘어간다 – 로그도 달지 않는다• 발생해서는 앆 되는 상황이라면 차라리 프로그램을 종료시켜라 – 프로그램이 종료되면 리포트를 잘핚다 – 서비스를 시작하면 죽지 않게 막는다
    • 마무리
    • 온라읶 MMORPG의 서버 개발 프로세스를 개선하여, 소프트웨어의품질을 향상시킨다
    • 신뢰핛 수 있는 코드를 작성하여작업의 효율을 높이고 결과적으로높은 수죾의 서비스를 제공핛 수있게 된다
    • 스레드간 격리객체의 연결코드관리프로토타이핑최적화 및 예외처리
    • 감사합니다 Q&A