마켓컬리에서의 PHP 이야기

마켓컬리에서의 PHP 이야기

개발언어는 도구일 뿐이라고 말은 하지만, 솔직히 구인/구직의 경우 개발자의 실력보다 우선시 되어 판단되는 것이 개발 언어라고 보여집니다. PHP 개발자는 한국 개발자 커뮤니티에서 어떤 위치에 있을까? 혹은 어떤 평가를 받을까 고민하던 중, 다음의 책을 읽고 많은 반성 지점 내지는 제가 오픈소스 개발자 커뮤니티에서 무엇을 해야 할까 고민하게 되었습니다.

오픈소스 커뮤니티에서의 PHP의 위치는?

The Clean Architecture In PHP 책에서 언급되듯, PHP는 그간 나쁜 개발 언어로 분류되곤 했습니다. 또 그에 기반한 개발 도구, 비정규적인 프레임웍들로 인해 더욱더 "나쁜 개발 언어"로 각인되었습니다.

The Clean Architecture In PHP

나쁜 코드 쓰기는 쉽다

PHP는 시작하기가 너무 쉬워서 결국 많은 개발자가 모였다. 잘하는 사람 못하는 사람할 것 없이 말이다. PHP가 1994년에 등장한 이래로 계속 개발자가 모여들고 있다. 이 글을 쓰는 시점에는, PHP로 쓰인 코드가 20년 치가 쌓여있다.

오래전부터 어마어마하게 많은 형편없게 작성된 PHP 코드가 글, 튜토리얼, 스택오버플로 답변, 그리고 오픈 소스 코드의 형태로 웹에 올라왔다. 물론 몇몇 정말 뛰어난 PHP 코드도 올라왔다. 문제는 좋은 방법(이게 무엇인지에 대해서는 곧 얘기할 것이다)으로 코드를 작성하기는 어렵기 마련이라는 것이다. 지저분하고, 빠르게, 이해하기 쉽게 짜기는 더 쉽다.

웹은 질 나쁜 PHP 코드와 함께 빠르게 확산되었다. 언어의 인기가 올라가고 사용하는 곳이 많아짐에 따라 질 나쁜 PHP 코드도 자연히 늘어날 수밖에 없었다.

간단히 말하면 PHP로 나쁜 코드를 짜기 너무 쉽고, 나쁜 코드를 찾기도 엄청 쉽고, 다른 사람들에게 나쁜 코드를 권해주기(외부에 있는 소스 코드를 전해주거나, 튜토리얼을 쓰는 방식으로)도 쉽고, 개발자들로 하여금 그들의 기술을 절대 “레벨 업” 하지 않게 하기 쉽다.

그럼 나쁜 코드가 왜 나쁜 걸까? 이에 대해 논해보자.

… 후략

The Clean Architecture In PHP, 크리스토퍼 윌슨과 이현석.

그러나 PHP 개발 커뮤니티에서도 이 혼란의 단계에만 머물러 있을 수는 없었고, 시간이 흘러 PSR, Composer, PHP 7의 출현 등으로 정체되어있던 PHP 개발 트랜드를 바꿔놓게 됩니다. 물론 오픈소스 커뮤니티 개발자들의 헌신으로요.

Modern PHP 시대

Image from https://www.newmediacampaigns.com/blog/josh-lockharts-modern-php-book-is-here

그리고, 전반적인 변혁의 흐름은 Modern PHP의 시대로 향하게 되었습니다.

마켓 컬리도 이 변화의 흐름에 몸을 맡기기로 했습니다.

  • 기존의 PHP 레가시가 있긴 하지만, 레가시는 새로운 코드로 교체될 것입니다.
  • 새로 개발되는 서비스는 Full Stack Framework인 Laravel 를 기본으로 합니다.
  • Laravel 로 만들어지는 서비스도 그냥 레가시를 교체하는 수준이 아닌, 개발과 유지보수가 편한 좀 더 클린 코드에 가깝게 만들어질 예정입니다.

그 일환으로 사내에서는 Testing, CI(Continuous Integration), CD(Continuous Deploy)를 구축하고 있으며, 서비스 개발/배포에는 Docker 활용도를 최대한 높이고 있습니다. 쿠버네티스에 대한 기술검토도 진행 중입니다.

Spring Cloud Netflix와 PHP

사내에서 진행되고 있는 MSA 관련 프로젝트에 PHP 관련 개발군들도 동참하고 있습니다.

사실 Java 코드 베이스인 Spring Cloud Netflix에 비 Java 언어군이 끼는 건 어렵습니다만, 비 Java 언어군의 Spring Cloud Netflix를 위해 준비된 Spring Cloud Sidecar를 이용해서 MSA 서비스 안에 들어가기로 했습니다.

관련 레퍼런스가 많이 없긴 하지만 충분히 해볼 만한 시도라고 판단했고, 현재 다양한 방향으로 진행 중입니다.

진행중인 몇가지 부분을 공유하고자 합니다.

  • Spring Cloud Netflix의 Circuit Breaker 기능이 PHP에 존재하지 않기 때문에 Java Hystrix 기능을 대신해서 구현한 라이브러리 phystrix를 사용할 예정입니다.
  • openzipkin zipkin-php + Kafka 등을 이용해서 트렌젝션 데이타도 수집해서 모니터링할 예정입니다.

Spring Cloud Security (OAuth2) 에 규격에 맞는 라이브러리 제작도 진행 중입니다.

사실 Spring Cloud Netflix + PHP 조합은 낯선 영역으로 과연 어디까지 구현해야 할지 감이 안 오기도 합니다. 그러나 그 빈 조각을 하나씩 하나씩 채워가며 준비 중이며 Spring Cloud Netflix + PHP의 해당 솔루션들은 구현이 완료되고, 오픈소스 진영 내에서 유의미하다는 사내 결정이 있으면 오픈소스 공개도 할 예정이기도 합니다.

마켓컬리의 스프링 클라우드 PHP 개발 소식은 주기적으로 이 블로그에서 공유토록 하겠습니다.

Market Kurly 에서의 PHP

마켓 컬리는 빠른 성장세에 있습니다. 기존 레가시 PHP 쇼핑몰 솔루션은 그 빠른 성장세에 많은 기여를 했습니다. 마켓 컬리는 PHP 언어에서 시작되었습니다. 되도록이면 계속적으로 PHP 언어와 함께하고 지속적으로 발전 시켜 나가는 회사가 되려 노력하겠습니다.

좀 더 능동적이고 유연한 E-Commerce 시장에서의 PHP 개발을 함께하고 싶은 분들을 위해…

마켓 컬리는 언제나 열려있습니다. 채용 링크