이 기사는 AWS 서버리스에 Laravel 애플리케이션을 배포하면 기존의 EC2 호스팅과 대조되는 이점을 살펴 봅니다. 저자는 리소스 집약적 인 EC2 설정에서 비용 효율적이고 확장 가능한 서버리스 아키텍처로 마이그레이션하는 경험을 공유합니다.
스포일러 : 돈을 절약하는 것이 아닙니다. 지갑이 불평하지 않지만
이것을 상상해보십시오 : 당신은 화려한 Laravel 애플리케이션을 만들었습니다. 당신의 걸작품, 디지털 스위스 군용 나이프는 버터 또는 사용자 피드백을자를 수 있습니다. 그러나 캐치가 있습니다. 매달 활용률이 낮은 EC2 인스턴스 비용을 지불하고 있습니다. 스케일링은 허리케인에 유람선을 주차하는 것 같은 느낌입니다.
친숙한 소리? 그것은 나에게했다.
3 년 전, 나는 대부분의 개발자들이 Crazy라고 부르는 일을했습니다. 나는 PHP를 AWS Lambda에 배치했습니다. “PHP? 서버리스에? 그것은 피자에 파인애플을 넣는 것과 같습니다!”라고 그들은 말했다
그러나 여기서 나는 3 년 후, 파인애플 피자를 자랑스럽게 먹었습니다. 서버리스의 Laravel이 왜 필요한 클라우드 업그레이드인지 알려 드리겠습니다.
전통적인 Laravel 호스팅 문제
(또는 : 내 EC2 사례가 실존 위기를 겪은 이유)
서버리스 이전에 Laravel 애플리케이션이 EC2에 거주했습니다. 초기화되지 않은 경우 EC2는 Amazon의 가상 개인 서버 버전으로, 코드를 실행하기 위해 기계 조각을 빌려줍니다. 멋지네요? 현실이 불량
<:> a) 먼저 : 존재 비용
EC2 인스턴스를 실행하는 것은 운전을 원하는 경우를 대비하여 24/7을 달리는 테슬라를 소유하는 것과 같습니다. 내 응용 프로그램은 항상 바쁘지는 않았지만 미터를 멈추지는 않았습니다. EC2 인스턴스,로드 밸런서 및 공유 스토리지 사이에서 나는 대부분의 시간을 유휴 상태로 한 서버 스택에 월 약 110 달러를 소비했습니다. 내 지갑? 타이타닉처럼 침몰했습니다.
나는 그랜드 사물의 계획에 크게 많지 않지만 솔로 개발자/기업가로서 모든 달러가 중요하다.
<:> b) 그런 다음 : 스케일링 악몽
EC2 인스턴스는 모든 것을 과도하게 반응하는 그 친구와 같습니다.
-
> 트래픽 스파이크? "지금 충돌하고 있어요, 고마워요!"
트래픽이 없습니까? "아직도 돈을 태워라!"
Autoscaling을 관리하는 것은 물고기에게 저글링을하도록 가르치는 것처럼 느껴졌습니다. 스케일링 그룹을 수동으로 조정하고,로드 밸런서를 구성하고, 과잉 프로비저를 과도하게 제안하지 않는기도.
c) 및 마지막으로 : DevOps, 무급 인턴
아무도 나에게 Laravel Development가 Sysadmin 책임의 측면과 함께 제공되었다고 말했습니다.
보안 패치 적용
오전 3시에 nginx/apache 구성 디버깅
이번에는 일을하기를 바라면서 달콤한 말을 - 명령에 속삭이는 속삭임.
-
나는 이생에 가입하지 않았다.
-
sudo
그때는 대안을 탐색하기 시작했을 때 서버리스 가이 두통에 대한 완벽한 해결책으로 눈에 띄었습니다.
aws serverless : 클라우드에서 PHP의 부활
신화를 명확히하자 : 서버리스는 "서버 없음"을 의미하지는 않습니다. 그것은 단지 서버가 다른 사람의 문제임을 의미합니다. 이 경우 AWS는 내가 실제로 즐기는 것에 집중하는 동안 무거운 리프팅을 처리합니다.
a) 람다 : 이벤트 중심의 마법사
Aws Lambda는 필요할 때만 나타나는 슈퍼 히어로와 같습니다. http 요청, SQS 메시지, 예약 된 작업 등 이벤트에 대한 응답으로 코드를 실행합니다. 그리고 일이 끝나면 개발자 모임에서 무료 피자보다 더 빨리 사라집니다.
유휴 비용 없음 : 실행 시간 만 지불합니다 (밀리 초로 측정 됨) .
자동 스케일링 매직
: 100,000 요청의 스파이크를 받았습니까? Lambda는 땀을 흘리지 않고 (또는 은행 계좌를 비우지 않거나) 처리합니다.
stationeless by design : 매번 새로운 시작과 같습니다. 디자인은 모듈 식으로 생각하도록 강요합니다.
b) 관리 서비스 : 무성한 영웅
서버리스는 람다가 아니라 생태계입니다. AWS는 DIY 인프라를 "그냥 작동"하는 관리 서비스로 대체합니다.
Database : SQL 애호가를위한 Aurora Serverless (MySQL/Postgres)와 같은 옵션
S3 : 디스크 공간이 부족할 걱정없이 파일을 저장하십시오.
sqs : 장기 실행 작업을 해체하여 비동기 적으로 처리합니다
c) PHP 역설
나는 그것을 인정할 것이다 : PHP는 서버리스에 대해
born 가 아니었다. 그것은 물고기에게 나무를 오르라고 요청하는 것과 같습니다. 불평 할 것이지만 결국에는 그렇게 할 것입니다. 전통적으로 PHP-FPM에 의존하는 Laravel은 Lambda의 임시 세계에서 번성하기 위해 약간의 조정이 필요했습니다.
- 세션 : mySQL 또는 redis와 같은 외부 데이터베이스로 옮기십시오.
파일 스토리지 : Laravel 's
Facade를 사용하여 모든 스토리지 작업을 S3로 리디렉션합니다.
큐 관리 - : 비동기 작업 실행의 기본 드라이버로 SQS를 구성하십시오.
캐싱 : 로컬 스토리지 대신 redis 또는 dynamodb와 같은 외부 서비스를 활용하십시오.
부팅 시간 최적화 : 콜드를 최소화하여 지방을 다듬어 (사용되지 않은 종속성).
환경 변수 : 중앙 집중식 및 보안 구성 관리를위한 AWS Secrets Manager 또는 매개 변수 저장소로
Storage
파일을 교체하십시오.
-
Serverless는 서버를 Lambda 함수로 교체하는 것이 아닙니다. 건축에 집중하는 동안 AWS가 운영 통증 포인트를 처리하는 것입니다.
-
Serverless가 Laravel의 잠재력을 최대한 활용하는 방법
-
그래서, 서버리스의 Laravel은 실제로 약속을 전달합니까?
Serverless는 단순한 유행어가 아니라 혁신적인 변화입니다. 서버리스에 대한 Laravel의 아름다움은 기존 호스팅의 약점을 해결하는 동시에 더 빠르고 확장 가능하며 비용 효율적인 솔루션을 가능하게하는 능력에 있습니다. 그러나 진정한 마법은 이러한 이점이 어떻게 결합되는지 탐구 할 때 발생합니다. 고장합시다.
a) 콜드 스타트 : 현실에서 신화를 분리하는
콜다가 새 인스턴스를 초기화하면 콜드가 시작됩니다. PHP가 낮잠에서 깨어나는 것으로 생각하십시오. 비평가들은 그들을 종말처럼 취급하지만, 관리 가능하다 : -
현실 .env : PHP Laravel과 함께 전형적인 추위가 ~ 3-5 초 정도입니다.
솔루션 :
Laravel Octane : 요청간에 응용 프로그램을 계속 유지하여 시작 시간을 줄입니다. 후속 요청은 ~ 200ms 이하로 처리됩니다
Provisioned 동시성 : 중요한 엔드 포인트에 대한 AWS 프리 월스 인스턴스 (추가 비용이지만 핵심 엔드 포인트의 경우 가치가 있지만) .
대부분의 응용 프로그램의 경우 트래픽이 적은 동안 3 초 이하 지연이 허용됩니다. 대부분의 사용자는 특히 Lambda가 "따뜻한"상태를 유지할 때 교통 스파이크 중에는 콜드 스타트를 알지 못합니다.
b) 통증이없는 스케일링
전통적인 호스팅의 스케일링은 종종 끝없는 전투처럼 느껴집니다. 서버리스를 사용하면 스케일링이 쉽게됩니다. 갑작스런 교통량이 급증하는 동안 더 이상 자동화 규칙을 조정하거나 손가락을 건너지 않습니다. AWS Lambda는 기본적으로 수평으로 확장되는 추측을 제거합니다
예는 다음과 같습니다
시나리오 : 응용 프로그램이 바이러스 성이 있습니까? 예! -
Old EC2 설정 : 대기 시간이 발생하기 시작하고 AWS에 로그인하여 인스턴스 수를 수동으로 조정하고 최선을 위해기도 하시겠습니까? 아, 그리고 가용성 구역에서 해당 인스턴스의 균형을 올바르게 균형을 맞추는 것을 잊지 마십시오.
- 새로운 람다 설정 : AWS는 필요에 따라 많은 인스턴스를 자동으로 생성하여 손가락을 들어 올리지 않고 수천 개의 동시 요청을 처리합니다. 당신은 팝콘을 잡고 Netflix 시리즈처럼 CloudWatch 메트릭을 시청합니까?.
이것은 편의성이 아니라 마음의 평화입니다. 람다는 응용 프로그램의 성공을 축하하는 데 집중하는 동안 무거운 리프팅을합니다. 그리고 가장 중요한 부분? 당신은 당신이 사용하는 컴퓨팅 시간에 대해서만 지불합니다.
c) 비용 효율성 : MVP
서버리스는 돈을 절약 할뿐만 아니라 소비하는 것에 대해서만 지불하는 뷔페를 갖는 것과 같습니다.
-
나의 오래된 EC2 설정 : /월.
4x t3.small ec2 인스턴스 : $ 60.00
1x로드 밸런서 :
1x EBS (EC2 인스턴스 간의 공유 스토리지) : $ 7.80
MySQL 인스턴스 (db.t4g.medium) :
lambda : /month
위 내용은 Laravel 애플리케이션을 AWS Serverless로 마이그레이션 한 이유 (시간과 비용을 절약 할 수있는 이유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!