최근 Sina Weibo 플랫폼 및 빅 데이터 부서의 수석 설계자인 Hui Xinchen('Brother Bird'로 알려짐)이 Sina에서 사임하고 Lianjia에 합류했다는 소식이 어제 Lianjia 관계자와 본인을 통해 확인되었습니다. 보도에 따르면 Hui Xinchen은 Lianjia에 합류한 후 기술 부사장 및 수석 설계자를 맡을 예정입니다. InfoQ는 이러한 경력 변화에 관해 Hui Xinchen을 인터뷰하여 그 뒤에 숨겨진 이야기와 프로그래머의 경력 경로에 대한 그의 경험에 대해 알아보았습니다.
Hui Xinchen(Bird Brother라고도 함)은 중국에서 가장 영향력 있는 PHP 기술 전문가이자 PHP 개발 팀의 핵심 구성원이자 PECL 개발자이며 Zend Company의 외부 컨설턴트입니다. 그는 Yahoo, Baidu, 그리고 현재 Sina Weibo에서 플랫폼 및 데이터 부서의 수석 설계자이자 수석 PHP 컨설턴트로 근무했습니다. Hui Xinchen은 PHP NG의 핵심 개발자이자 PHP5.4 및 5.5의 주요 개발자입니다. PECL 개발자로서 그는 Yaf, Yar, Yac 및 Taint와 같은 뛰어난 오픈 소스 작업에 기여했으며 APC, Opcache, Msgpack 및 기타 프로젝트의 관리자이기도 합니다.
인터넷에서 PHP 튜토리얼을 검색하는 초보자부터 PHP 개발팀의 핵심 구성원까지 Hui Xinchen은 전체 프로세스가 "괴물과 싸우고 업그레이드하는 것"과 같다고 느낍니다. 자바와 마찬가지로 블루칼라 언어라고도 불리는 PHP는 더 많은 프로그래머를 양성할 수 있는 요람이라고 생각한다. 그는 자신의 블로그 Fengxuezhiyu에서 PHP 언어 및 Zend 엔진과 관련된 연구, 기술 및 뉴스를 공유합니다. 왼손에는 코드, 오른손에는 시.
Q: 어떻게 프로그래밍에 관심을 가지게 되었나요?
처음 "프로그래밍"을 한 것은 Xiaobawang 학습 기계에서였던 것 같습니다. 이후 대학에서 컴퓨터 공학을 공부했고, 대학원생 때 학교의 캠퍼스 구축을 담당했으며, 학교의 여러 중등 학과의 웹사이트를 포함하여 많은 웹 개발 작업을 했습니다. 그 당시 캠퍼스 BBS 유지 관리 등 생각해보면 제가 프로그래밍을 사랑하게 된 계기나 계기는 없었던 것 같습니다. 이 업계에서 일한다는 게 너무 자연스럽고, 싫다는 느낌이 들지 않아서 계속 이 일을 하게 됐어요.
Q: 어떻게 PHP와 사랑에 빠지셨나요? 어떻게 PHP 개발팀의 핵심 멤버가 되었나요?
대학원생이었을 때 웹사이트를 만들고 싶었는데 어떻게 해야할지 전혀 몰라서 인터넷에서 검색하다가 우연히 간단한 웹사이트 만드는 법을 알려주는 PHP 튜토리얼을 발견했습니다. 그래서 따라해 보았는데 별 문제가 없다는 것을 알았습니다. 설치, 배포(당시에는 중앙 집중식 배포 도구가 없었지만 LAMP 배포 방법에 대한 튜토리얼이 많이 있었습니다), 코드 작성, 구문은 C 언어와 매우 유사하며 많은 API의 이름도 libc API와 유사합니다. 그래서 PHP와의 불가분의 유대가 시작되었습니다.
2011년이었을 겁니다. 당시 Baidu용 Ap(Yaf의 전신 프로젝트)를 개발했는데 Baidu 내부적으로 잘 사용하고 있어서 PECL에 기여할까 생각하다가 약간 수정했습니다. (또 다른 프레임워크인 이 이름은 PHP에 프레임워크가 많기 때문에 약간 자기 비하적입니다.) 그래서 저는 영어가 서툴러서 그 과정이 상당히 힘들었습니다. , Pierre Joye는 당시 Yaf가 PECL에 들어갈 수 있도록 많은 도움을 주었습니다.
그리고 Yaf를 제출하기 전에는 실제로 PHP의 소스 코드를 공부하고 있었기 때문에 버그와 수정 사항도 많이 제출했습니다. 예를 들어 어느 날 정오에 Rasmus(PHP의 아버지)가 말한 것을 기억합니다. IRC는 그가 버그를 발견했다고 거의 5분 후에 수정했습니다.
점차 몇몇 사람들과 친해지고 모두의 신뢰를 얻은 후, 지원서를 작성하고 PHP의 핵심 코드 제출 허가를 얻었습니다. 저는 PHP의 직접 개발 및 버그 수정에 참여하여 회원이 되었습니다. 개발팀.
핵심은 사실 천천히 쌓이는 과정이기도 합니다. 모든 사람이 당신의 작업을 인정한다면 그들은 당신의 의견을 존중할 것입니다. 저는 점차 Dmitry Stogov와 친해졌고, Zend의 핵심 부분에 대한 제출 허가를 얻었으며, 많은 핵심 버그 수정과 새로운 기능을 제출했습니다. 나중에 저는 Zend의 외부 컨설턴트가 되었고 점차적으로 핵심 개발자가 되었습니다.
몬스터와 싸우고 업그레이드하는 것처럼 들리네요.
Q: 어떤 상황에서 Yaf를 개발하게 되었나요? 당시 Baidu는 Yaf 개발을 어떻게 지원했습니까?
Yaf 이전에는 실제로 프레임워크를 사용할지 여부에 대한 고전적인 논쟁이 있었습니다. "프레임워크를 사용하면 성능이 저하되고, 프레임워크를 사용하지 않으면 개발 효율성이 저하됩니다."
당시 Baidu에는 다음을 포함하여 많은 프레임워크가 있었습니다. 일부 팀이 직접 작성한 오픈 소스 Yii, ZF 등. 한 가지 문제는 클래스 라이브러리의 일부 주변 시설이 서로 통신할 수 없다는 것입니다.
또 다른 이유는 많은 프레임워크 작성자가 프레임워크를 출시한 후 다양한 사람들이 프레임워크를 다양하게 수정한다는 사실을 알게 되기 때문입니다. 결과적으로 시간이 지남에 따라 프레임워크는 출시된 후 다양한 변형이 되고 통합될 것입니다. 앞으로는 업그레이드도 불가능해집니다.
그래서 저는 이러한 문제를 해결하기 위한 프레임워크를 구현하기 위해 PHP 확장을 사용하기로 결정했습니다. 물론 이 확장을 작성하기 전에는 그다지 자신감이 없었고 확장이 얼마나 많은 성능 향상을 가져올 수 있는지도 몰랐습니다. 다행히 최종 결과는 매우 좋습니다.
Q: Yaf를 작성하기 위해 C 언어를 선택한 이유는 무엇입니까?
PHP는 C언어로 작성되었기 때문에 확장자도 C언어로 작성되어 있기 때문에 Yaf를 작성하기 위해 C언어를 선택했습니다.
Q: 왜 바이두를 떠나 시나 웨이보로 오셨나요?
실제로는 여러 가지 이유가 있습니다. 예를 들어 저는 그 당시 바이두에서 T7에 있었기 때문에 업무에 덜 관여했다는 느낌이 들었습니다. 지나간.
그리고 당시 저는 바이두의 상업 검색 부서에 있었고 트래픽이 많은 시스템에 직접 노출되지 않았기 때문에 다시 연습할 수 있는 대규모 플랫폼을 찾고 싶었는데 웨이보가 우연히 그런 플랫폼이었습니다. .
웨이보에 온 후, 저는 이전에 경험하지 못한 많은 도전에 노출되었고, 또한 제가 가진 지식을 활용할 수 있는 무대가 더 커졌다는 것을 느꼈습니다.
Q: 현재 시나 웨이보에서 어떤 업무를 담당하고 있나요?
저는 현재 Weibo 기술 부서에서 기본 서비스 팀을 이끌고 있습니다. 주요 업무도 단계별로 나누어져 있습니다. 처음 2년 동안의 주요 업무는 다양한 기본 프레임워크, 도구 개발을 포함하여 Weibo LAMP의 성능을 최적화하는 것입니다. , 환경 최적화, 사양 개발 등
지난 2년 동안 Weibo의 LAMP 아키텍처는 안정화되었으며 전반적인 성능이 여러 번 향상되었습니다. 우리는 또한 자체 고성능 LAMP 종합 솔루션을 보유하고 있습니다. 따라서 LAMP를 최적화하는 작업이 줄어듭니다. 이제 주요 초점은 캐싱 중간 계층, 트랜스코딩 서비스, 통신 플랫폼 등과 같은 인프라의 연구 및 개발에 있습니다.
Q: PHP7(PHPNG)은 Sina Weibo 플랫폼에서 PHP를 사용할 때의 필요성과 문제점을 중요한 피드백으로 고려했나요?
물론 이것은 존재합니다. 개발팀에 합류한 이후로 다른 많은 구성원들과 비슷한 논쟁을 벌였습니다. 저는 성능이 매우 중요하다고 생각하고, 어떤 사람들은 새로운 기능이 매우 중요하다고 생각하기 때문에 새로운 기능이 성능에 영향을 미칠 때가 있습니다. 우리는 분쟁을 가질 것입니다.
저는 성능 향상에 매우 집착합니다. 그래서 나중에 Dmitry Stogov와 더 많이 협력하게 되었습니다. 왜냐하면 그 역시 성능에 특히 관심을 갖고 있기 때문입니다.
제가 성능에 관심을 갖는 가장 큰 이유는 중국 최대 LNMP 플랫폼인 Weibo에 1%의 성능 향상이 가져올 수 있는 가치를 실제로 이해하고 있기 때문입니다. 우리 웨이보의 전반적인 성능은 2년 전과 비교하여 크게 향상되었지만, 개발 효율성에 영향을 미치지 않으면서 추가적인 개선은 언어 및 환경 성능 개선에만 의존할 수 있다는 것을 깨달았습니다. 그래서 이 부분이 웨이보의 PHP 요구 사항입니다.
PHP7은 WordPress 5.6과 비교하여 100% 이상의 실제 성능 향상(QPS)을 제공합니다. 내년에는 PHP7이 출시된 후 Weibo 전체 LAMP 플랫폼의 다양한 비즈니스도 100% 성능 향상을 얻을 수 있다고 믿습니다.
Q: PHP7(PHPNG) 개발에 참여하게 된 과정은 어떻게 되나요? 다른 개발팀 구성원들과 어떻게 협업하시나요?
PHPNG는 당시 비밀 프로젝트였습니다. 원래 참가자는 Dmitry와 저뿐이었습니다. 올해 봄에 진행했던 JIT 프로젝트는 효과가 만족스럽지 않아 중단되었습니다. 모두가 우울했습니다.
Dmitry는 ZVAL을 재설계하고 크기를 압축하여 메모리 사용량을 줄이는 아이디어가 있다고 말했습니다. 그런 다음 우리 둘은 그것에 대해 논의했습니다. 왜냐하면 우리는 실제로 매일 다양한 아이디어를 가지고 있기 때문에 그 당시 우리는 단지 '글쎄, 이 아이디어가 효과가 있을 수도 있다'라고 생각했습니다. 하지만 아직은 별로 자신감이 없습니다.
당시 주요 아이디어는 효과를 테스트하기 위해 작동하는 프로토타입을 빠르게 만드는 것이었습니다. 이 과정에서는 주로 아이디어에 대해 논의한 후, 하고 싶은 부분을 구현하고, 병합하는 작업을 주로 합니다.
협력을 위한 주요 도구는 여전히 Skype이지만, 그는 상트페테르부르크에 있고 우리와 시차가 있기 때문에 이메일 통신도 사용하고 Github를 통해 코드를 검토할 것입니다.
나중에 프로젝트가 거의 마무리되었을 때 우리는 "야, 이거 좋은 생각이고 효과가 있다"는 걸 깨달았습니다. 그런 다음 공개되었습니다. 그 이후에는 아이디어가 있으면 RPC를 제출하고 패치를 제출하고 투표를 하면 모두가 반응하고 병합하는 방식으로 진행됐다.
Q: 지금까지 PHP7에는 어떤 기능이 추가되거나 제거되었나요? 출시 전에 성능은 또 어떻게 개선되나요?
주로 성능 향상을 제공하는 PHPNG 브랜치 외에도 AST(추상 구문 트리) 지원, 균일 변수 구문, 64비트 길이 문자열 지원, 일부 새로운 구문 설탕 및 최근 기본 TLS 등이 있습니다.
PHP7은 2015년 10월에 공식적으로 출시될 예정입니다. 그 전에는 zend_array를 사용하여 부분 변환과 같은 iTLB 누락을 줄이기 위한 기능을 지정하여 재섹션 및 정렬과 같은 Hashtable을 직접 대체하는 것과 같은 몇 가지 아이디어가 남아 있습니다. JIT 최적화 수단(유형 뒤집기)이 PHP에 도입되고 일부 유형별 OPCodeHandler가 속도를 높이기 위해 사용됩니다. 또 다른 예는 코드 데이터의 지역성을 더욱 개선하고 캐시 누락 등을 줄이는 것입니다.
물론 병행해서 진행하고 있는 JIT 프로젝트도 있는데, PHP7이 출시되면 이 프로젝트가 준비가 될지 걱정스럽습니다.
Q: 새 버전의 PHP는 PHP6에서 PHP7로 직접 업그레이드됩니까? 왜?
가장 큰 이유는 PHP에는 PHP6이라는 개발 버전이 있었는데 나중에 이 버전이 실패하여 출시되지 않았기 때문입니다. 따라서 이 버전은 PHP7이어야 합니다.
Q: Facebook에서 출시한 Hack 언어와 PHP는 어떤 관계가 있나요? Hack의 목적은 PHP를 대체하는 것입니까? 이 두 언어의 장점은 무엇입니까?
별로 중요하지 않습니다. Hack은 PHP가 아닙니다. 교체에 관해서는 그들(페이스북)이 그런 생각을 갖고 있을 수도 있다고 생각하지만, 커뮤니티가 이를 받아들이는지 여부에 달려 있습니다.
저는 Hack에 대해 잘 알지 못해서 구체적으로 언급할 수는 없습니다.
Q: PHP는 배우기 쉽고 문턱이 낮기 때문에 프로그래밍에 적합하지 않은 사람들이 들어왔다고 생각하는 사람들도 있습니다. 이러한 견해에 대해 어떻게 생각하시나요?
저는 이 관점에 정말 동의하지 않습니다. 저도 학부를 졸업하고 개발직을 찾아 여러 부서에 면접을 보았으나 거절당했습니다. 아마도 당시 면접을 보시는 분들의 눈에는 저는 그냥 프로그래밍에 적합하지 않은 사람으로 보였을 것입니다.
그러나 PHP의 임계값이 낮기 때문에 사람들은 자신의 "프로그래밍" 결과를 빠르게 확인할 수 있으며, 이는 초보자에게 긍정적인 피드백과 인센티브 효과를 가져 관심이 있는 사람들을 더욱 흥미롭게 만듭니다. 프로그램을 진행하는 사람이 많을수록 훌륭한 사람이 등장하고 기술 전체의 발전에 기여할 확률이 높아집니다.
게다가, 미래의 프로그래밍 언어는 사용 편의성을 향해 발전해야 하며, 프로그래밍의 문턱을 더욱 낮춰야 합니다. 언젠가는 누구나 프로그래밍할 수 있게 될 것입니다!
Q: 자격을 갖춘 PHP 엔지니어의 지식 구조는 무엇입니까?
전에 "PHP 엔지니어는 모두 뱀 기름이다"라는 말이 있던 것을 기억합니다. 사실 이 문장은 PHP 엔지니어에게만 적용되는 것이 아니라 모든 엔지니어에게 적용되어야 합니다.
지식 구조가 넓어야 합니다. 웹 개발에는 HTML, CSS, JS 및 SQL 외에도 Nginx, Linux 및 Mysql을 구성, 유지 관리 및 문제 해결하기 위한 몇 가지 일반적인 방법도 알아야 합니다.
Q: 면접 시 기술력 외에 어떤 점에 중점을 두시나요?
명확한 사고와 의사소통, 말하기에 특히 주의하겠습니다. 사실 직설적으로 말하면, 앞으로 우리가 함께 일한다면 장애물은 없을지, 성장 가능성은 클지.
질문: phpe.net의 전 웹마스터인 Chen Bole은 현재 남성용 양말을 판매하고 있습니다. 미래에 대한 당신의 계획은 무엇입니까? 당신은 항상 코더가 될 것입니까?
사실 저는 굉장히 게으른 사람이에요. 오늘 와인을 마시면 다음 날은 술에 취해버릴 것 같아요. 그래서 저는 사실 미래에 대해 잘 모르겠습니다. 저는 지금도 여전히 프로그래밍을 좋아하고 제 작업을 통해 모든 사람에게 혜택을 주고 커뮤니티로부터 칭찬을 받는 것을 좋아하며 앞으로도 그렇게 할 것입니다. 그것.
사람들은 왜 당신을 형제새라고 부르나요?
제가 어렸을 때 QQ IM 별명은 "Snow Migratory Bird"였는데, 이는 Xiong Tianping의 노래 제목이었습니다. 앞으로는 나이가 들어서인지 슬슬 비명을 지르게 되네요.
사실 처음엔 '버드맨'도 좋은 말이 아니었는데 나중에는 점점 더 좋아지더라구요. , 상관없다고 소리치기 시작했습니다.
그럼 Linux 개인 개발자인 Niao 형제는 대만인인 Cai Deming입니다. 자주 물었다. 대만 출신의 냐오(Niao) 형제는 자신의 성(姓) 때문에 중학교 때까지 동급생들이 그를 '차이터우'라고 불렀고, 고등학교 이후에는 '신인'이라고 불렀다고 말했다. '신인'이라는 호칭을 쓰던 그는 후배들 사이에서 '신인 선배'로 자주 불리곤 했다. 그래서 버드 형제는 이름을 '브라더 버드'로 바꿨다. 점점 더 많은 사람들에게 친숙해지고 확산될 때까지 전해졌습니다. 네트워크 ID로 'VBird'를 사용한 이유에 대해 냐오 형제는 처음에는 무지해서 '루키'가 'Vegetable'(영어로 'Vegetable'은 'Vegetable')인 줄 알았다고 스스로 웃었다. Niao 형제는 모든 Linux 애호가가 되었습니다.
그래서, 리눅스 프라이빗 키친은 제가 쓴 것이 아니고, 리눅스 프라이빗 키친에서는 생선맛 돼지고기 삼겹살 만드는 법을 가르쳐주지도 않습니다!