티켓몬스터를 위한 PHP 개발 방법

48
PHP 개발 방법 용영환 for 티몬 개발자

description

이틀에 걸쳐 티켓몬스터에서 진행했던 PHP 개발 방법 세미나 자료입니다.

Transcript of 티켓몬스터를 위한 PHP 개발 방법

Page 1: 티켓몬스터를 위한 PHP 개발 방법

PHP 개발 방법

용영환

for 티몬 개발자

Page 2: 티켓몬스터를 위한 PHP 개발 방법

저는

Café 24, Tatter&Company, NAVER, Ahems

“이클립스 PDT” “개발자, 나를 말하다”

Page 3: 티켓몬스터를 위한 PHP 개발 방법

오늘과 내일,

우리가 함께 할 것들은

개발자를 보다 인간답게

살 수 있게 해줍니다.

Page 4: 티켓몬스터를 위한 PHP 개발 방법

어머, 이건 꼭 해야해!!

Page 5: 티켓몬스터를 위한 PHP 개발 방법

웹 개발 환경

Development Server Production Server

Page 6: 티켓몬스터를 위한 PHP 개발 방법

웹 개발 환경

Development Servers - Dev Server : Co-working - Apha Server : Co-testing - Beta Server : Verification

Page 7: 티켓몬스터를 위한 PHP 개발 방법

PHP 코딩 도구

Notepad ++ Editplus Ultraedit Vim

Page 8: 티켓몬스터를 위한 PHP 개발 방법

좀더 나은 PHP 코딩 도구

이클립스 PDT Intelli J PHP Storm NetBeans Sublime ......

Page 9: 티켓몬스터를 위한 PHP 개발 방법

우리는

PHP 개발 방법에 대해

같이 고민해 볼 겁니다.

Page 10: 티켓몬스터를 위한 PHP 개발 방법

개발 방법이란?

개발 도구와는 다른 것?

뭐지?

Page 11: 티켓몬스터를 위한 PHP 개발 방법

방법

어떤 일을 해 나가거나 목적을 이루기 위하여 취하는 수단이나 방식.

Page 12: 티켓몬스터를 위한 PHP 개발 방법

방법

어떤 일을 해 나가거나 목적을 이루기 위하여 취하는 수단이나 방식.

개발 방법

개발을 하기 위한 수단이나 방식.

Page 13: 티켓몬스터를 위한 PHP 개발 방법

함수 지향 개발 방법, 객체 지향 개발 방법,

애자일 개발 방법, 짝 프로그래밍 개발 방법,

통합 개발 환경에서의 개발 방법,

버전 관리 소프트웨어를 통한 개발 방법,

천상천하 유아독존 개발 방법 등

Page 14: 티켓몬스터를 위한 PHP 개발 방법

우리의 PHP 개발 방법은

통합 개발 환경인 Eclipse PDT 에서

객체 지향적으로 코딩을 하고

PHPUnit 으로 단위 테스트를 하고

Xdebug 로 디버깅을 하고

Profiling으로 팀장님이 짠 소스 코드 성능 테스트도 하고

CodeSniffer로 코드를 훑어 볼 겁니다.

Page 15: 티켓몬스터를 위한 PHP 개발 방법

통합 개발 환경(IDE)?

Page 16: 티켓몬스터를 위한 PHP 개발 방법

이클립스

Java 로 만들어진 범용 소프트웨어 플랫폼

모든 것이 다 Plug-ins

이클립스 재단

현재 Version 4.3 Kepler (2013년 6월 26일)

이클립스 RCP 를 이용하면 뭐든 만들 수 있다.

Page 17: 티켓몬스터를 위한 PHP 개발 방법

이클립스 PDT

이클립스 공식 프로젝트

PHP 통합 개발 환경

2007년 4월 6일 0.7 버전 공개

Zend 사에서 주로 개발

Page 18: 티켓몬스터를 위한 PHP 개발 방법

이클립스 PDT 장점

코드 자동 완성

객체지향적 개발 가능

자동 포멧 교정

코드 오류 검출

실행, 디버깅 등을 손쉽게 가능

여러가지 유용한 개발 도구 지원

Page 19: 티켓몬스터를 위한 PHP 개발 방법

PHP 이야기

PHP에 대해서 이야기를 나누어 보죠.

Page 20: 티켓몬스터를 위한 PHP 개발 방법

왜 PHP가 까이는가?

보안에 취약하다?

성능이 안좋다?

코드가 지져분하다?

단순한 스크립트 언어다?

PHP: 잘못된 디자인의 프랙탈

-예측 가능, 일관성, 간결, 신뢰성, 디버깅

Page 21: 티켓몬스터를 위한 PHP 개발 방법

PHP는 건재하다

Page 22: 티켓몬스터를 위한 PHP 개발 방법

언어는 표현 수단이다.

선입견과 편견을 버리자.

이 세상 모든건 다 장단점이 있다.

Page 23: 티켓몬스터를 위한 PHP 개발 방법

PHP 버전

PHP 5.0 : Zend 2.0 , 4X Fater than PHP 4.

PHP 5.3 : Namespace, Closures, Garbage collection 등

Page 24: 티켓몬스터를 위한 PHP 개발 방법

PHP 미래

PHP 5.5 : Coroutines, finally, Zend OPCache

Coroutines???

Page 25: 티켓몬스터를 위한 PHP 개발 방법

PHP 미래

PHP 5.5 : Coroutines, finally, Zend OPCache

Coroutines???

Aikido, AngelScript, BCPL, Pascal, BETA, C#, ChucK, D, Dynamic C, Erlang, F#,

Factor, GameMonkey, Go, Haskell, High Level Assembly, JavaScript(since 1.7), Icon,

Io, Limbo, Lua, Lucid, µC++, MiniD, Modula-2, Nemerle, Perl(Perl 5 with Coro, Perl

6 native[citation needed]), Prolog, Python(since 2.5), Ruby, Sather, Scheme, Self,

Simula-67, Squirrel, stackless Python, SuperCollider, Tcl(since 8.6), urbiscript

AND PHP 5.5

Page 26: 티켓몬스터를 위한 PHP 개발 방법

PHP 미래

PHP 5.6

Internal Operator Overloading

Uploads of over 2GB are now accepted

POST data memory usage decreased

Skipping Parameters

Page 27: 티켓몬스터를 위한 PHP 개발 방법

PHP 미래

PHP 5.6

Skipping Parameters

function foo($param, $param2=’a', $param3=0, $param4=”) {…}

foo(‘value’, default, default, ‘another value’)

Page 28: 티켓몬스터를 위한 PHP 개발 방법

Namespace

클래스 중복을 방지한다. PEAR DB 독점권이라도 갖고 있나?

Page 29: 티켓몬스터를 위한 PHP 개발 방법

Anonymous function

“익명함수” 함수명이 없다. 그래서, 단순하면서도 강력하다.

Page 30: 티켓몬스터를 위한 PHP 개발 방법

Lambda

또다른 “익명함수” 이또한 신세계이다.

Page 31: 티켓몬스터를 위한 PHP 개발 방법

코드 살펴 보기

Page 32: 티켓몬스터를 위한 PHP 개발 방법

배포

로컬 워크스테이션

공용 개발 or 알파 서버

무엇으로

Page 33: 티켓몬스터를 위한 PHP 개발 방법

배포

개발 or 알파 서버

베타 or 프로덕션 서버

무엇으로

Page 34: 티켓몬스터를 위한 PHP 개발 방법

배포

http://ant.apache.org/

Page 35: 티켓몬스터를 위한 PHP 개발 방법

객체지향 PHP

왜 객체지향으로 개발해야 하는가?

모델링을 보다 자연스럽게 할 수 있다.

모델링이 되면 개발이 쉬워진다.

재사용성이 높아진다.

확장 및 유지보수가 보다 쉬워진다.

Page 36: 티켓몬스터를 위한 PHP 개발 방법

객체지향 PHP

왜 객체지향으로 개발해야 하는가?

인간이 생각하는 방식과 비슷하다. 자연스럽다.

재사용성과 확장성 퇴근이 빨라질 수도 있다.

Page 37: 티켓몬스터를 위한 PHP 개발 방법

객체지향 PHP

Model – 데이터 모델

Data Access Object – 데이터 처리

Business Object – 비즈니스 로직

Page 38: 티켓몬스터를 위한 PHP 개발 방법

Model

Page 39: 티켓몬스터를 위한 PHP 개발 방법

3D Modeling

Page 40: 티켓몬스터를 위한 PHP 개발 방법

Class Modeling

Page 41: 티켓몬스터를 위한 PHP 개발 방법

Getter & Setter

외부에서 접근 가능한 정보에는

Getter 또는 Setter를 만든다.

캡슐화 + 정보 은닉

클래스의 내용을 모르더라도 원하는 결과를 얻게 한다.

정보에 대한 접근을 제한한다.

Page 42: 티켓몬스터를 위한 PHP 개발 방법

프로파일링 일반적 수사 기법으로는 해결되기 힘든 연쇄살인사건 수사 등에 투입되어

용의자의 성격, 행동유형 등을 분석하고,

도주경로나 은신처 등을 추정하는 역할을 한다.

Page 43: 티켓몬스터를 위한 PHP 개발 방법

프로파일링

http://xdebug.org/

Page 44: 티켓몬스터를 위한 PHP 개발 방법

Kcachegrind ( KDE )

Page 45: 티켓몬스터를 위한 PHP 개발 방법

테스트

소프트웨어 개발에서 테스트란?

우리가 해야 할 것은 “단위 테스트”

PHPUnit 은 단위 테스트를 할 수 있게 해주는 도구

Page 46: 티켓몬스터를 위한 PHP 개발 방법

테스트

소프트웨어 개발에서 테스트란?

우리가 해야 할 것은 “단위 테스트”

PHPUnit 은 단위 테스트를 할 수 있게 해주는 도구

Page 47: 티켓몬스터를 위한 PHP 개발 방법

CI

continuous integration

지속적인 통합?

Page 48: 티켓몬스터를 위한 PHP 개발 방법

CI

빌드 자동화

테스트 자동화

배포 자동화