기술 문서 : https://medium.com/@techworldwithmilan/rest-api-design-best-practices-2eb5e749d428 API는 다양한 소프트웨어 서비스 간의 통신 채널을 의미합니다. API 프로토콜들은 다음과 같이 다양한 유형이 존재합니다. REST - API의 프론트엔드와 백엔드를 분리하고 개발 및 구현에 상당한 유연성은 제공하는 클라이언트 / 서버 접근 방식을 사용합니다. RPC - 여러 매개변수를 보내고 결과를 받습니다. SOAP - HTTP, SMTP, TCP 등 인터넷에서 발견되는 광범위한 통신 프로토콜을 지원합니다. WebSocket - 지속적인 연결을 통해 브라우저와 서버 간에 데이터를 교한하는 방법을 제공합니다. 시스템 간의 표준 통신 방법은 A..
에러 발생 상황 FastAPI로 회원가입을 구현하고 있었고 유저 프로필 이미지를 업로드해야 하는 니즈가 있어 이미지 업로드를 구현하였다. 아래는 예시 코드이다. class Body(BaseModel): email: str password: str @app.post("/signup/") async def create_upload_file( body: Body, file: UploadFile = File(...), ): # 이미지 업로드 및 회원가입 로직 하지만 Pydantic에서 body가 잘못됐다는 오류가 발생했고 열심히 구글링 했다. 원인은 UploadFile이 있으면 body가 json 형태가 아닌 form 형태로 바뀌어서 와야 하는데 BaseModel로 인해 body 객체가 json 타입이 되어버려..
기술문서 : https://danielfoo.medium.com/11-database-optimization-techniques-97fdbed1b627 11 Database Optimization Techniques Database often becomes the bottleneck in software performance. Having an optimized database is essential for high performing systems. Here… danielfoo.medium.com 사용자 수가 적지 않은 서비스를 운영하다보면 데이터베이스로 인한 어플리케이션 성능 이슈가 발생하는 경우가 많습니다. 저또한 설계의 미스로 인해 매우 복잡한 쿼리가 탄생하거나 슬로우 쿼리가 발생한 경험이 많았었..
이슈 발생 상황 React Native에서 Apple Social Login을 구현하는 상황이었고 설정할게 많지 않았기에 금방 적용하고 시뮬레이터로 테스트를 진행해보았다. 정상적으로 로그인이 되는가 싶었는데 아래와 같이 유저 이름 또는 비밀번호가 일치하지 않는다는 오류가 발생했다. 아무리 확인을 해봐도 나는 잘못입력하지 않았다. 열심히 구글링을 한 결과 그 이유를 알게되었다. 해결 방법 해결 방법은 허무하고도 간단하다. 아마 그 계정은 애플 회원 가입 후 한번도 iCloud 페이지에 로그인을 하지 않은 계정일 것이다. iCloud homepage 페이지에 로그인하고 약간 동의를 하면 정상적으로 로그인된다.
이슈 발생 상황 React Native + Firebase 를 사용하여 구글 소셜 로그인을 구현하고 있었다. 공식 문서의 예시대로 잘 작성하고 아래 구글 로그인 버튼을 눌러 구글 로그인 진행 사용자 인증까지는 잘 진행되었지만 토큰을 받아오지 못하고 콘솔에 [Developer Error] 로그가 찍힌다. 뭐가 문제지 하고 많은 구글링을 해보았는데 대부분 android 패키징에 사용하는 keystore가 debug 전용 key를 사용해서 발생하는 문제인 것 같았다. 하지만 내 경우는 이 부분은 문제가 없었고 간단한 이슈였다. 혹시 keystore를 잘 세팅해도 문제가 지속되는 분들과 미래의 까먹을 나를 위해 기록한다. 해결 방법 세팅 방법 중 Firebase에서 다운받은 google-services.json..
이슈 발생 상황 React Native를 환경에서 react-native-seoul/kakao-login 라이브러리를 사용하여 카카오 소셜로그인을 구현하는 상황이었고 안드로이드 부분을 먼저 구현하였고 이제 ios 개발해야지 하고 ios 빌드 후 에뮬레이터에 띄웠는데 아래와 같이 강제 종료되는 이슈가 발생 세부사항을 분석하고 구글링을 해봐도 해결하지 못하고 있다가 github issue에서 원인과 해결 방법을 찾을 수 있었다. 해결 방법 react-native-seoul/kakao-login README에 나와있는 3번 과정(info.plist 세팅)을 수행하면 된다. 안드로이드를 다 개발하고 ios 세팅을 하지 않은 상태에서 ios 빌드를 하면 앱이 강제 종료 되어버린다. info.plist에 카카오 관..
현업에서 개발 경력이 2년이나 되어가는데 지금까지 비밀번호 암호화 기법을 제대로 공부해보지도 않고 사용해 왔다. 지금까지 입사한 회사들에서는 이미 비밀번호 암호화가 잘 구현되어 있어 다른 업무들을 처리하느라 평소 더욱 관심을 가지지 못한 것 같다. 이번에 입사한 회사에서는 외주로 제작된 프로젝트를 다시 내제화하는 작업을 진행 중이라 처음부터 끝까지 개발을 진행하고 있는데 이참에 비밀번호 암호화 방식을 제대로 알아보고 사용하자는 생각이 들어 공부 후 이렇게 기록을 남긴다. 단방향 암호화 방식 비밀번호를 암호화하기에는 어떤 암호화 방식이 적합할까? 학부 때 배운 암호화 방식을 생각해 보면 종류는 크게 아래 2가지가 있다. 양방향 암호화 방식 단방향 암호화 방식 위 2개에 대해 간단히 설명하면 양방향 암호화 ..
기술문서 : https://netflixtechblog.com/making-the-netflix-api-more-resilient-a8ec62159c2d Making the Netflix API More Resilient Maintaining high availability and resiliency for a system that handles a billion requests a day. netflixtechblog.com 여느 서비스와 마찬가지로 넷플릭스 또한 유저들에게 최고의 스트리밍 서비스 경험을 제공하려면 항상 API 서버가 트래픽 처리가 가능한 상태를 유지하는 것이 중요합니다. 넷플릭스는 하루 평균 10억 건에 달하는 요청을 오고 이를 처리해야 하기 때문에 넷플릭스의 API 팀은 시스템의 고..