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

Post on 02-Jul-2015

1.581 views 9 download

description

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

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

PHP 개발 방법

용영환

for 티몬 개발자

저는

Café 24, Tatter&Company, NAVER, Ahems

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

오늘과 내일,

우리가 함께 할 것들은

개발자를 보다 인간답게

살 수 있게 해줍니다.

어머, 이건 꼭 해야해!!

웹 개발 환경

Development Server Production Server

웹 개발 환경

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

PHP 코딩 도구

Notepad ++ Editplus Ultraedit Vim

좀더 나은 PHP 코딩 도구

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

우리는

PHP 개발 방법에 대해

같이 고민해 볼 겁니다.

개발 방법이란?

개발 도구와는 다른 것?

뭐지?

방법

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

방법

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

개발 방법

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

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

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

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

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

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

우리의 PHP 개발 방법은

통합 개발 환경인 Eclipse PDT 에서

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

PHPUnit 으로 단위 테스트를 하고

Xdebug 로 디버깅을 하고

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

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

통합 개발 환경(IDE)?

이클립스

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

모든 것이 다 Plug-ins

이클립스 재단

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

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

이클립스 PDT

이클립스 공식 프로젝트

PHP 통합 개발 환경

2007년 4월 6일 0.7 버전 공개

Zend 사에서 주로 개발

이클립스 PDT 장점

코드 자동 완성

객체지향적 개발 가능

자동 포멧 교정

코드 오류 검출

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

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

PHP 이야기

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

왜 PHP가 까이는가?

보안에 취약하다?

성능이 안좋다?

코드가 지져분하다?

단순한 스크립트 언어다?

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

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

PHP는 건재하다

언어는 표현 수단이다.

선입견과 편견을 버리자.

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

PHP 버전

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

PHP 5.3 : Namespace, Closures, Garbage collection 등

PHP 미래

PHP 5.5 : Coroutines, finally, Zend OPCache

Coroutines???

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

PHP 미래

PHP 5.6

Internal Operator Overloading

Uploads of over 2GB are now accepted

POST data memory usage decreased

Skipping Parameters

PHP 미래

PHP 5.6

Skipping Parameters

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

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

Namespace

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

Anonymous function

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

Lambda

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

코드 살펴 보기

배포

로컬 워크스테이션

공용 개발 or 알파 서버

무엇으로

배포

개발 or 알파 서버

베타 or 프로덕션 서버

무엇으로

배포

http://ant.apache.org/

객체지향 PHP

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

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

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

재사용성이 높아진다.

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

객체지향 PHP

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

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

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

객체지향 PHP

Model – 데이터 모델

Data Access Object – 데이터 처리

Business Object – 비즈니스 로직

Model

3D Modeling

Class Modeling

Getter & Setter

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

Getter 또는 Setter를 만든다.

캡슐화 + 정보 은닉

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

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

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

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

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

프로파일링

http://xdebug.org/

Kcachegrind ( KDE )

테스트

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

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

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

테스트

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

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

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

CI

continuous integration

지속적인 통합?

CI

빌드 자동화

테스트 자동화

배포 자동화