PHPFest 2013이 있었다. 국내에서는 많이 사용하면서도 기술 공유는 비교적 적은 PHP 개발자들에게는 가뭄에 단비같은 행사가 아닐 수 없다. 2009년에 PHPFest가 있었고, 최근에는 제작년에 있어서 갔던 기억이 있다. 밑에 있는 올해 행사 공지를 봤을때, 관심있는 발표가 꽤 있어서 꼭 가야겠다고 생각했다. 가보니 생각보다 참석한 사람도 많았고, 발표 내용도 좋았다. 각 세션별로 들은 내용을 한번 정리해 본다.

1. PHP 애플리케이션 성능 향상방법

  • 빠른 코드를 만들기 위해서 연구하느라 리소스(시간, 비용)를 투입하는 것 보다는 PHP 최신 버전을 사용하는 것이 효율이 좋다.
  • OpCache 등의 캐시를 사용하라.
  • 리팩토링을 위한 툴을 활용 : xdebug, Jmeter

2. Elastic Beanstalk

  • 비용만 괜찮았다면 회사에서 사용하고 싶을 정도로 편리하게 해놨다. 이제 시작하는 스타트업의 경우는 괜찮은 선택일 수도 있겠다. 자세한 것은 아마존웹서비스 안내를 참고.

3. MySQL - 5.5 이하 버전을 기준으로

  • FROM절 서브쿼리
  • Stored function에서의 Deterministic : NOT인 경우(Default) 인덱스를 사용하지 않아서 성능 이슈
  • IN (서브쿼리) 형태 : 외부 쿼리 결과의 ROW 수 만큼 서브 쿼리가 수행됨. 해결은 JOIN으로 대체하거나 괄호 안의 서브쿼리를 미리 상수화하는 방법, GROUP BY로 해결하는 방법도 있다고 한다.
  • 트랜젝션시에는 외부 작업을 하지 않아야 한다.(외부 작업이 중단되버리면 Lock이 오래 지속됨) 자원이 IDLE인데 쿼리 처리 속도가 느리면 다음과 같이 Lock을 확인해본다.
    > SHOW ENGINE INNODB STATUS;
    ...
    .... TRANSACTION 3F0B, ACTIVE 23sec .... // 1초 이상이면 문제임
    > pager grep ACTIVE; // 유닉스에서 위의 구문만 찾을 수 있도록 해주는 명령
  • 긴 쿼리는 이해하기도 어렵고, 최적화가 어려우므로 피하자.
  • Unique Index가 많으면 Lock
  • memcached 등의 캐쉬를 사용한다면, 없는 데이터에 대한 것도 캐쉬할 필요가 있을 수 있다.
  • 문의는 http://cafe.naver.com/realmysql

4. Javascript

  • 이벤트 핸들러는 버블링을 사용 : Target은 hasClass() 등을 사용해서 판별
  • (이제는) localStorage를 사용
  • 문자열 합칠 때에는 배열을 join한다. 다른 예는 Array(11).join("a") 의 형태.
  • 개체를 추가할때는 append()보다는 html()을 사용
  • 추천 툴 : jsmatch, jsperf, DynaTrace, Yslow

후기를 좀 더 보태보면, 원래 계획표에 있는 코드이그나이터 발표는 발표자의 안타까운 개인 사정으로 취소가 되었다는 것을 행사가 시작하면서 미리 공지되었기에 이해하더라도, 마지막 순서로 있는 HipHop 발표는 하지 않고, 갑자기 Q&A 시간을 가지는 바람에 좀 당황했다. 나처럼 HipHop 발표를 기대한 사람들이 분명 있었을텐데 별다른 설명도 없었고, 설명을 듣는다고 달라질 것도 없는 것 같아서 따로 물어보지는 않았지만, 이전의 PHPFest도 그랬듯이 행사진행이 매끄럽지 않다는 느낌을 가지게 했다. 그리고, 사전 등록도 받았는데, 경품 추첨 같은 것도 미리 준비했으면 어땠을까 하는 아쉬움이 남는다.

진행상의 옥의 티는 있을지라도 행사 자체는 유익했다. PHP Korea에서 목표로 하고 있듯이 매년 PHPFest가 열리기를 기대한다.

'Etc' 카테고리의 다른 글

Deview 2013  (0) 2013.10.15
Why We Prefer Founding CEOs  (0) 2013.10.08
기술을 사람에게 적용하는 방법  (0) 2013.06.23

+ Recent posts