웹 API 설계 원칙을 통한 REST API 설계 패턴과 실전 사례
·
Server/ETC.
REST API 설계에 대해 고민하게 된 배경첫 개발자로서 취업 후, "API Path만 보고도 어떤 기능을 하는지 알 수 있도록 설계해야 한다."라는 말을 들었다.이를 위해 좋은 API 설계 원칙을 고민하며 여러 책을 찾아보게 되었다.그중 제임스 히긴보텀이 작성한 "웹 API 설계 원칙"이라는 책을 읽게 되어, 해당 내용을 기반으로 정리하게 되었다.후반부에 들어서며 RPC, 이벤트, 마이크로서비스에 어울리는 API 설계에 대한 내용이 작성되어 있지만,전반부에 작성된 REST API에 대한 내용만 정리하였다.API란 무엇일까?API(Application Programming Interface)의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다.인터페이스는 두 애플리케이션 ..
tRPC에서의 쿠키 설정 및 안전한 클라이언트-서버 간 쿠키 관리 방법
·
Server/Node
tRPC에서 Cookie를 설정하게 된 배경최근 회사 서비스에서 국제화(i18n) 기능을 추가하게 되었다.서버 사이드에서 언어를 처리하기로 협의가 이뤄졌고, 이를 위해 서버 단에서 Redux를 사용하여 언어에 맞는 번역 데이터를 제공하는 방법을 선택하였다.이때, 서버는 사용자가 어떤 언어를 사용하고 있는지 알아야 하므로, 사용자의 언어를 판단하는 과정을 고민하게 되었다.사용자 언어 판단 방법먼저, 로그인한 유저인지 아닌지를 판단하기로 했다.로그인한 유저라면, 유저 DB에 존재하는 locale 정보를 가져와 언어를 판단하기로 했다.로그인하지 않은 유저를 위해서는 다양한 방법을 준비했다.이미 우리 서비스를 사용한 유저일 수 있으므로, 저장된 쿠키를 확인하기로 했다.쿠키가 존재하지 않는다면, HTTP 헤더에 ..
VS Code에서 Poetry 가상환경 사용하기
·
Server/Python
VS Code에서 Poetry 가상환경 사용하기1. Poetry 초기 설정VS Code에서 Poetry 가상환경을 정상적으로 인식하기 위해서는 다음 단계별 설정이 필요합니다가상환경을 프로젝트 디렉토리 내에 생성하도록 설정poetry config virtualenvs.in-project true가상환경 경로를 .venv로 지정poetry config virtualenvs.path "./.venv"의존성 설치poetry install2. 주의사항위 설정을 하지 않으면 가상환경이 시스템의 다른 위치에 생성되어 VS Code가 인식하지 못합니다.프로젝트 루트에 .venv 폴더가 생성되지 않으면 VS Code가 가상환경을 자동으로 인식할 수 없습니다.이러한 이유로 프로젝트 루트에 가상환경을 생성하고 관리하기 위해..
Provisioned와 Reserved Concurrency를 활용한 AWS Lambda 최적화
·
Server/Infra
Concurrency 구성 이유얼마 전, 회사의 웹 어플리케이션을 ECS에서 Lambda로 이전하였다. EPR 성격을 띠고 있는 서비스로, 업무 시간에만 사용하는 서비스, 사용자와 상호작용이 많이 없는 트래픽이 적은 서비스적 특성에 따른 효율성을 위해 Lambda 이전을 검토했다. 운영 환경을 이전하면서 약 400$에 달하는 금액을 절약할 수 있었고, 이전하면서 발생하는 크리티컬한 이슈도 없어서 꽤 성공적인 프로젝트였다. 큰 이슈가 없어서 인프라에 대해 신경을 끄고 살다가, 옆자리 인프라 고수분으로부터 업무 부탁을 받게 되었다.“준호님, 이거 Reserved Concurrency 설정해서 배포해 주실 수 있으실까요?” 아차, Provisioned Concurrency만 설정하고 다음에 Reserved C..
RPC의 이해와 tRPC 예제 소개
·
Server/Node
RPCRPC에 관심을 갖게 된 이유?RPC에 관심을 갖게 된 이유로는 두 가지가 존재합니다.             먼저, 회사에서 새롭게 진행하는 서비스에서 tRPC를 사용하기로 했습니다. 별도의 외부 서버를 둬서 API를 호출하는 것이 아닌, Next.js를 사용하여 백엔드 서버까지 구현하려 하고 있어요. 해당 프로젝트에 기여하려면 tRPC, 즉 RPC에 대해 어느 정도 이해가 필요하다고 생각했습니다. 또 하나는, 많은 공고에서 RPC가 많이 보이고 있기 때문이에요. 흔히 이야기하는 테크 기업들에서 필수 사항은 아니지만, 해당 기술을 사용하고 있거나 우대사항에 RPC 경험을 서술하고 있거든요.회사의 프로젝트 기술에 이해도를 높이기 위해, 많은 회사에서 사용하고 있는 기술이라는 호기심을 충족해 보기 위해..
[Terraform] registry.terraform.io/hashicorp/template 2.2.0 doesn't match any of the checksums previously recorded in the dependency lock file
·
Server/Infra
문제terraform init 명령어를 진행할 때, 아래와 같은 에러가 발생했다. │ Error: Failed to install provider│ │ Error while installing hashicorp/template v2.2.0: the local package for registry.terraform.io/hashicorp/template 2.2.0 doesn't match any of the checksums previously recorded in the dependency lock file (this might be because the available checksums are for packages targeting different platforms); for more inform..
[Terraform] Incompatible provider version, darwin_arm64 이슈
·
Server/Infra
문제 terraform init 명령어를 입력하였을 때, 아래와 같은 에러가 발생할 때가 있다.╷│ Error: Incompatible provider version│ │ Provider registry.terraform.io/hashicorp/template v2.2.0 does not have a package available for your current platform, darwin_arm64.│ │ Provider releases are separate from Terraform CLI releases, so not all providers are available for all platforms. Other versions of this provider may have different pl..
FAST API Debug 실행 오류. Directory 'app/static' does not exist
·
Server/Python
파이썬 공식 홈페이지에서는 아래와 같은 코드로 디버그를 실행하도록 안내하고 있습니다.if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)하지만 개발을 진행된 프로젝트의 경우 위 코드로 fast api를 실행할 때, 아래와 같은 오류가 발생할 수 있습니다.Traceback (most recent call last): File "/Users/project/app/main.py", line 134, in app.mount("/static", StaticFiles(directory="app/static"), name="static") ^^^^^^^^^^^^^^^^^^^^^^^^^^^..
코드플리
'Server' 카테고리의 글 목록