[1일 1식 라라벨] 라라벨 Vapor

이 글은 2019년 7월 29일에 1일 1식 라라벨에 발행된 글입니다. 일부 시점이나 버전 정보가 블로그 발행시점과 다를 수 있습니다.

지난 주 라라콘에서 라라벨이 새로운 서비스를 소개했습니다. 바로 Vapor 입니다. “서버는 우리가 다 알아서 해줄게요, 여러분은 라라벨 애플리케이션에만 신경쓰세요”라고 이야기하는 것 같습니다. 매트 스타우퍼가 라이브 블로깅으로 정리한 라라벨 Vapor 소개(Introducing Laravel Vapor)와 모하메드 새드의 AWS 람다란 무엇이고, 라라벨 Vapor가 이를 어떻게 사용하는가(What is AWS Lambda, and how Laravel Vapor uses it)를 요약해서 소개하겠습니다.

동기

라라벨은 포지(Forge)라는 배포 서비스를 가지고 있습니다. 포지를 사용하면 AWS, DigitalOcean, Linode 같은 클라우드 서버에 애플리케이션을 쉽게 배포할 수 있습니다. 편리한 서비스이지만 사람들이 오토 스케일링 같은건 어떻게 해야하는지 문의했나봅니다. 이에 대해 라라벨팀은 포지에 오토스케일링 기능을 추가하는 대신 새로운 접근 방법을 택했습니다. 바로 서버리스입니다.

서버리스 (Serverless)

서버리스는 말그대로 서버가 없다는 뜻입니다. 하지만 정말로 서버가 없는건 아니죠. 실제로 어딘가에 서버가 존재는 하지만 나는 그 존재를 알 필요가 없다는 것입니다.

라라벨의 index.php 파일을 열어보면 아래 내용을 볼 수 있습니다. (전에 리퀘스트 라이프 사이클에서도 다뤘던 내용이죠! ^^)

$response = $kernel->handle(
  $request = Illuminate\Http\Request::capture()
);

$response->send();

애플리케이션에 리퀘스트를 보내면 Kernel::handle 메소드가 처리하고 브라우저에게 리스폰스를 되돌려줍니다. 그동안은 이를 위해 서버를 마련하고 어떤 요청이 들어오던 index.php를 실행하도록 준비하고 기다리고 있었습니다.

Kernel::hanle 메서드만 똑 떼어내서 어떤 서비스에 올려놓고, 메서드가 실행되는 횟수만큼만 비용을 낸다면 어떨까요? 서버에 배포하거나, 라이브러리를 업그레이드하거나, 저장공간을 관리하는데 전혀 신경안써도 됩니다. 단지 기능을 업로드하고 기능이 동작하는만큼만 돈을 내는 것이죠.

이게 기본적인 서버리스입니다.

AWS 람다(Lambda)

람다는 AWS의 FaaS(Function as a Service)입니다. 람다는 주로 마이크로서비스 아키텍처의 일부로 사용되며, 한 번에 한 가지 일을 처리합니다.

  • 이미지를 S3에 올리면 섬네일을 만든다.
  • 큐에 잡을 전송하면, 람다가 실행되고 잡을 처리한다.
  • HTTP 리퀘스트를 엔드포인트로 전송하면, 람다가 실행되고 응답을 생성한다.

이런 식입니다. 이는 일반적으로 애플리케이션을 애플리케이션을 여러개의 서로 다른 서비스로 쪼개고, 각 서비스는 개별 코드 베이스를 갖는 것을 의미합니다.

마이크로서비스는 장점이 많지만 여러 서비스를 엮는게 어렵습니다.

Vapor는 여러분의 라라벨 애플리케이션을 AWS 람다로 변환합니다. 람다를 실행한 이벤트에 따라 Vapor가 애플리케이션의 특정 기능을 수행해줍니다. 사용자가 엔드포인트를 방문하면 라우터로 보낸 후 응답을 되돌려주고, 잡이 추가되면 워커를 작동시키는 식입니다. 이런식으로 라라벨 애플리케이션 작성 방법은 그대로 유지한채 서버리스의 장점을 취할 수 있습니다. Vapor가 라라벨 애플리케이션을 서버리스로 변환하는데 필요한 모든 일을 해줍니다.

마치며

그냥 단순히 배포와 오토스케일링을 처리해주는 서비스인가?라고 생각했는데 라라벨을 서버리스로 변환해주고 편하게 관리할 수 있게 해주는 서비스였네요. 정말 엄청나네요! AWS 비용이 얼마나 나올지 가늠이 안되긴하는데 저는 서비스가 정식 오픈 하는대로 한 번 써볼까 합니다. Vapor 자체는 프로젝트 수에 상관없이 한달에 39$라서 크게 부담은 안되는 듯 합니다.

[1일 1식 라라벨] 라라콘 US 2019 발표자들

이 글은 2019년 7월 25일과 26일에 1일 1식 라라벨에 발행된 글입니다. 일부 시점이나 버전 정보가 블로그 발행시점과 다를 수 있습니다.

라라벨 진영의 가장 큰 행사인 LARACON US 2019가 오늘 시작됐습니다. 올해 8월에 라라벨 6가 나온다는 발표도 있었고 Vapor 라는 서버리스 플랫폼을 새로 출시했네요. 아직 자료나 동영상 등이 많이 공유되진 않고 있어서, 좀 더 자세히 알게되면 다시 공유하겠습니다. 대신 오늘은 LARACON US 2019 발표자들을 간단히 소개해볼까해요. 원래는 발표 주제도 공유하고 싶었는데, 이번 LARACON은 발표 제목이 공개되지 않았어요. 아쉽지만 어떤 인물들이 등장했는지만 알아보겠습니다. 인물이 꽤 많으니 컨펀런스 일정에 따라 첫째 날 둘째 날로 두 편에 나누어 쓰겠습니다.

LARACON US 2019 연사 Day 1

아담 와든 Adam Wathan

7월 20일자 1일 1식 라라벨에 등장했던 인물이군요. TailwindCSS를 만든 사람입니다. 작년 재작년 발표 모두 좋았는데, 올해 또 등판했네요. 홈페이지에서도 확인할 수 있겠지만 TailwindCSS 뿐만 아니라 라라벨과 뷰 관련 강좌와 도서도 많이 만들었습니다. Full Stack Radio라는 팟캐스트도 운영하고 있어요. 프론트엔드, 백엔드 모두 능통하고 발표까지 잘하는 난 사람이네요.

프릭 반 더 허르텐 Freek Van Der Herten


스파티 Spatie의 공동대표입니다. 스파티는 벨기에에 있는 웹 에이전시인데, 라라벨용 패키지를 엄청 많이 만들어 공개하고 있고, 구성원들로 하여금 지식 공유를 적극 권장하는 것으로 보입니다. 스파티의 패키지는 테일러 오트웰도 종종 트위터에서 언급하곤 합니다. 라라벨에 관심있는 사람이라면 스파티가 내놓은 패키지들이 뭐가 있는지 살펴보는게 도움이 될 것입니다. 프릭은 블로그를 통해 지식을 활발히 공유하고 있고, 뉴스레터도 발행하고 있습니다. 최근에 Oh Dear!라는 웹사이트 모니터링 서비스를 오픈하기도 했습니다.

바비 엘리트 바우만 Bobby Elite Bouwmann

이번 LARACON에서는 라라벨 디자인 패턴에 대해 발표했나봅니다. 이전 LARACON에서 발표했던 디자인 패턴 1.0 발표는 여기(슬라이드 쉐어유튜브)에서 볼 수 있습니다. markdownmail.com를 운영하고 있습니다. 공식 메뉴얼에 없는 숨겨진 기능들을 소개하는 라라벨 시크릿이라는 책을 쓰고 있다고 하네요.

제이슨 맥크레리 Jason McCreary

약간의 비용만 내면 내 프로젝트의 라라벨 버전을 올려주는 서비스인 라라벨 시프트를 만든 사람입니다. 자본주의 만세! 물론 사람이 해주는건 아니고 자동화되어있습니다. GettingGit과 BaseCode라는 강좌를 판매하고 있습니다. BaseCode는 읽기 좋은 코드를 작성하는 10가지 비법을 알려준다는데 저도 흥미가 가네요.

케이스 대미아니 Keith Damiani

타이튼 Tighten 소속 개발자입니다. 타이튼도 스파티와 마찬가지로 오픈소스 활동과 지식 공유 활동을 활발히 하는 에이전시입니다. 요즘에는 그래프 데이터베이스와 모바일 앱개발에 관심이 많다고 합니다. 이번 라라콘에서도 라라벨과 그래프 데이터베이스라는 주제로 발표를 하는 것 같네요.

카야 토마스 Kaya Thomas

명상앱을 만드는 Calm에 소속된 iOS 개발자입니다. 사이드 프로젝트로 We Read Too를 개발했습니다. We Read Too는 2014년에 런칭됐고, 2018년 2월에 애플 스토어에 피쳐드 된 바 있다고 하네요. 이번 행사에서는 풀 타임으로 일하면서 사이드 프로젝트를 런칭하고 운영하기라는 주제로 발표를 한 듯 합니다.

조나단 레이닝크 Jonathan Reinink

PHP를 쓸 땐 라라벨을 주력 프레임워크로 사용하는(라라벨 행사의 연사니 당연한 얘긴가요 ^^;) 웹 개발자입니다. Church Social이라는 서비스를 운영하고 있습니다. 오픈소스 활동로 Glide라는 이미지 조작 라이브러리와 Plates라는 템플릿 엔진을 만들었습니다. 그리고 아담 와든과 함께 TailwindCSS를 만들었네요! 요즘에는 서버 주도 SPA를 만드는 InertiaJS라는 자바스크립트 프레임워크를 만들고 있다고 합니다. 최근에 엘로퀀트 퍼포먼스 패턴이라는 비디오 강좌를 만들었는데, 이번 행사에서는 이와 관련된 발표를 했나봅니다. 발표를 들은 테일러 오트웰이 “엘로퀀트에 대해선 레이닝크가 나보다 낫다”고 했네요. 위에 등장했던 프리크 반 더 허르텐도 레이닝크가 블로그로 소개한 테크닉을 써봤더니 좋더라는 트윗을 올린걸로 봐선 확실히 실력이 좋고 엘로퀀트를 더 좋은 성능으로 사용하는 노하우가 있나봅니다.

저스틴 잭슨 Justin Jackson

팟캐스트 플랫폼 Transistor.fm을 창업했습니다. MegaMaker라는 부트스트래퍼(투자 받지 않고 개발해서 제품으로 소득을 올리는) 커뮤니티도 운영 중입니다. 개발자를 위한 마케팅(Marketing for Developers)과 Jolt라는 책을 썼습니다.

LARACON US 2019 연사 Day 2

콜린 디카를로 Colin Decarlo

Vehikl 이라는 웹 에이전시 소속 개발자입니다. 이번 행사에서 발표한 주제는 “나는 웹 개발에 필요한 모든 것을 트위터 타임라인에서 배웠다”였다고 하네요.

스티브 쇼거 Steve Schoger

스티브 쇼거는 디자이너로서 아담 와든과 함께 RefactoringUI를 저술했습니다. UI에 요긴하게 쓸 수 있는 디자인용 에셋인 Hero PatternsHeroiconsZondicons 프로젝트를 진행하고 있습니다. Hero Patterns와 Zondicons는 무료, Heroicons는 유료인거 같네요. 이번 행사 발표 주제는 비쥬얼 디자이너 처럼 생각하는 법이었네요.

에반 유 Evan You

VueJS의 창시자입니다. 구글에서 일하면서 만든 VueJS가 대히트를 쳐서 현재는 풀타임 오픈 소스 개발자로 생활하고 있습니다. Patreon에서 밝힌 바에 따르면 Patreon에서 한 달에 16,000달러(한화로 약 2,000만원)를 번다고 하네요. 라라콘의 단골 연사 중 한 명입니다. 2016년부터 올해까지 한 해도 빠지지 않고 발표를 한 것 같습니다. 이번 행사에서는 Vue v3.0에 어떤게 추가될 건지 발표한 것 같네요.

마르셀 포시오트 Marcel Pociot

라라벨 전문 개발사인 Beyond Code에서 매니징 및 개발자로 일하고 있고 PHP 챗봇 프레임워크인 BotMan을 만들었습니다. 최근에 자신의 라라벨용 패키지들의 총 다운로드 수가 1,000만이 넘었다고 합니다. 굉장하네요. 최근에 패키지 개발 방법 동영상 강좌을 출시했습니다. 이번 라라콘 발표도 패키지 개발 방법에 관한 내용이었던 것 같아요. 이 강좌는 현재 오픈 기념 40% 세일 중이라고 하네요.

칼렙 포르지오 Caleb Porzio

Livewire 개발자 입니다. Livewire는 라라벨용 풀스택 프레임워크인데, 순수 PHP를 쓰듯 간단하게 동적 프론트 엔드를 만들어 준다고 합니다. 이번 행사에서 공개한 것 같은데, 트위터를 통해서 느껴지는 반응이 심상치 않네요.

카트리나 트라예브스카 Katerina Trajchevska

원격 근무 개발자이자 개발자 채용 서비스 Adeva의 공동 창업자 입니다. Time Driven Development라는 제목으로 발표했네요.

크리스토프 럼펠 Christoph Rumpel

라라벨 코어 어드벤처의 저자입니다. 말그대로 라라벨의 코어를 파헤치는 동영상 강좌입니다. 원래는 무료였는데, 막상 해보니 시간과 에너지가 너무 많이 들어서 유료로 전환했다고 합니다. 현재는 라이프 사이클, 파사드, 엘로퀀트, 서비스 컨테이너를 다루는 컨텐츠가 준비되어 있고, 알림과 테스팅은 준비 중이네요. 이번 행사에서는 자신의 컨텐트인 라라벨 코어 어드벤처를 소개했나 봅니다. 라라벨 코어 어드벤처는 그 전에는 챗봇 관련 도서를 쓰고 강좌도 만들었다고 합니다.

드라이스 빈츠 Dries Vints

2018년 9월에 라라벨에 입사했습니다. http://laravel.io 를 관리한다고 하네요. 벨기에 엔트워프에 살고 Full Stack Belgium과 Full Stack Europe 이라는 모임을 주관한다고 합니다. 이번 행사에서는 EVENT SAUCING IN LARAVEL WITH EVENTSAUSE라는 주제로 발표를 했나 봅니다. 이벤트소스(EventSauce)는 프랭크 드 종(Frank de Jonge)이라는 개발자가 만든 PHP용 이벤트 소싱 라이브러리라고 하는데, 저한테는 아직 생소한 개념이네요. 공부해야겠어요 ㅠ 스파티의 프리크 반 더 허르텐이 이미 라라벨용 이벤트 소스 패키지도 내놨더군요. 암튼 새로 대두되는 주요 개념인것 같은 느낌입니다.

매트 스타우퍼 Matt Stauffer

타이튼의 기술 분야 리더입니다. Laravel Up & Running이라는 책(저와 익명의 공동 번역자가 함께 번역 중입니다. 한빛미디어를 통해 내년 초에 출간 예정이에요 ^^)의 저자이고 라라벨 팟캐스트5분 긱 쇼 등을 진행하고 있습니다. 라라벨 뉴스를 발행하고 있기도 하고요. 이번 행사에서 Onramp라는 학습 가이드를 소개한 듯 합니다. 살짝 봤는데 좋네요. 컨텐츠가 영어인게 아쉽습니다.

이상으로 라라콘 US 2019 2일차 연사를 모두 소개했습니다. 많은 분들이 현업에 종사하기도 하지만 오픈 소스 활동과 지식/정보 사업을 주로 하는 분들도 많아서 부럽네요. 한국도 오픈소스 활동만으로, 혹은 컨텐트 생산 및 지식 전달 활동만으로도 잘 먹고 잘 살 수 있는 나라가 되면 좋겠어요. 여튼 화이팅 하는 걸로!

클린 아키텍처 인 PHP를 번역 출간했습니다

다른 언어들에 비해 유독 PHP는 중급자용 서적을 찾아보기가 어렵습니다. PHP가 워낙 쉬운 언어, 간단한 웹사이트 만들 때 쓰는 것이라는 이미지가 있기 때문인지, 아니면 중급자용 서적을 출간했다가 크게 실패를 해서인지는 모르겠습니다.

하지만 다른 언어들이 발달하는 만큼 PHP도 발전했고, 단순한 개인 홈페이지 뿐만 아니라 엔터프라이즈급 애플리케이션을 만드는데도 쓰입니다.

실제로 PHP로 자체 서비스를 운영하는 곳들은 대규모 처리, 대형 애플리케이션을 다룰 줄 아는 개발자들을 필요로 합니다. 그래서 PHP로 프로그래밍을 입문하는 사람들도 단순히 PHP를 다루는 방법을 익히는데 그치지 않고 더 좋은 소프트웨어를 만드는 방법을 배워야한다고 생각합니다.

그래서 현직 팀장들이 신입이 갖췄으면 하는 역량을 위주로 정리한 “바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서”를 쓰기도 했습니다. “바쁜..”은 아키텍처, 디자인 패턴, 객체지향 프로그래밍 등은 다루지 않고 있어서 다소 아쉬운 마음이 있었어요. 그러던 와중에 유익하게 읽었던 클린 아키텍처 인 PHP를 번역 출판할 기회를 얻게되어 즐거운 마음으로 번역에 도전했습니다.

처음해보는 번역이라 생각보다 힘들었습니다 ㅠ 모쪼록 더 나은 애플리케이션을 작성하는데 관심있는 모든 PHP 개발자 여러분들께 조금이나마 도움이 되길 바랍니다.

아래 구매링크에서 전체 목차와 샘플 챕터를 보실 수 있습니다. 많은 관심과 정보 공유 부탁드려요 ^^

구매 링크 https://leanpub.com/cleanphp-korean

감사합니다!