목록단체개발일지 (9)
밤빵's 개발일지
해커톤을 통해 Streamlit을 처음 접하고, 팀원들과 함께 이를 이용하여 챗봇을 만들었다. 나는 파이썬과 관련된 지식이 거의 없었기 때문에, 이 프로젝트는 나에게 생소한? 도전이었다. 하지만 팀원들과 함께 작업하면서 Streamlit이 얼마나 똑똑한 도구인지 깨닫게 되었고, 이를 통해 실시간 데이터 처리 및 애플리케이션 개발을 손쉽게 할 수 있음을 배웠다. 이번 개발일지를 통해 Streamlit의 기본 개념, 그리고 해커톤에서 만들었던 챗봇 개발 경험을 기록하려고 한다! ▶Streamlit이란?Streamlit은 파이썬으로 웹 애플리케이션을 쉽게 만들 수 있는 오픈 소스 프레임워크이다. 웹 개발 경험이 없는 파이썬 개발자도 간단한 코드를 통해 대화형 대시보드나 애플리케이션을 개발할 수 있다. Str..
🤓서버 보안지금까지 두 번의 프로젝트를 진행했지만, 아직 서버 보안에 대해 깊이 있게 고민해 본 적이 없었다. 이번 기회를 통해 서버 보안의 기초 개념을 공부하고, 프로젝트에서 실제로 적용할 수 있는 방법들을 정리해 보기로 했다. 서버 보안은 해킹과 같은 외부 공격으로부터 애플리케이션과 데이터를 보호하는 매우 중요한 부분이다. 보안의 기본 원칙을 이해하고 실천하는 것은 서버 안정성과 신뢰성을 높이는 핵심적인 요소이다😆 ▶ 서버 보안의 중요성서버 보안은 서버와 그 위에 운영되는 애플리케이션을 외부의 위협으로부터 보호하기 위한 여러 가지 방어 기법과 원칙을 말한다. 서버 보안이 제대로 구축되지 않으면, 데이터 유출, 서비스 중단, 악성 코드 감염 등 심각한 문제를 초래할 수 있다. 특히 개인정보나 금융 ..
😟포트원(Port One) 결제 연동 흐름포트원(Port One)을 통해 결제 기능을 구현하게 되었고. 처음에는 결제 프로세스가 어떻게 이루어지는지 감을 잡질못해서 매일매일 문서를 보거나 리서치만 하고 소위 말하는 삽질만하다가 프론트 짝꿍과 결제에 대해 소통을하면서 그 흐름을 잡아가는 중이다..! ▶ 포트원 결제 연동 흐름1. 백엔드에서 API를 통해 결제 데이터를 클라이언트로 전송결제 프로세스는 백엔드에서 클라이언트로 결제 관련 데이터를 전송하는 것으로 시작된다. 이때, 전송하는 데이터에는 결제를 위해 필요한 각종 정보가 포함되고, 클라이언트는 이 정보를 바탕으로 결제를 요청하게 된다.EstimateAndCommissionResponseDto 클래스가 그 예시가 될 수 있다. 이 클래스는 클라이언트에..
포스트맨 테스트를 하면서 처음 겪는 에러였다. 실행 돌리고 콘솔에서 가끔 봤던 단어였는데 이 에러를 겪고나서 다른 사람들한테 보여주려니 발생이 되지 않고있다가 곧 다시 발생할거라고 기술매니저님이 말씀하셨는데 정말 다시 발생해버렸다. 와 히카리풀이다!! 하고 개발일지 소재 생겼다고 좋아하다가 고치느라 많은 시간을 소모하고, 어찌어찌 사라졌다. 결제 기능을 구현하면서 볼 만한 에러도 아닌데 이런걸 다 보다니... 알아가는게 참 많은 시기구나...! HikariCP는 스프링 부트에서 데이터베이스 연결을 관리하는 데 자주 사용하는 고성능 JDBC 커넥션 풀이다. 하지만... 잘못된 설정이나 특정 상황에서 연결 풀의 문제가 발생할 수 있기때문에 에러의 원인과 해결 방안을 정리해보았다! ▶ HIkariCP 에..
결제기능을 구현하면서, 동시성문제와 멱등성에 대해서 알게됐는데 이름부터 너무 생소해서 이걸 어떻게 공부해야하나 걱정부터 앞서던 중 기술매니저님 께서 PUT과 PATCH를 생각하면 이해하기 쉬울거라고하셔서 연관지어 개발일지를 작성하게 되었다. 코드 예시는 내 서비스 코드를 사용했는데.. 기능 구현이 너무너무 안되고 있다😢멱등성(Idempotency) 문제는 결제 시스템을 구현할 때 중요한 개념이다. 멱등성은 같은 요청을 여러 번 반복해서 보내더라도 결과가 변하지 않는 성질을 의미하는데, 특히 결제 시스템에서는 멱등성을 보장하는 것이 매우 중요하다. 같은 결제 요청이 여러 번 처리되면 고객에게 중복된 결제가 발생할 수 있기 때문이다. 이 멱등성을 이해하기 위해서 HTTP메서드인 PUT과 PATCH와 연관지..
결제 기능을 구현하게되면서, 기술 매니저님의 조언에 따라 꼭 알아두어야 한다는 동시성 이슈와 LOCK 개념에 대해서 공부하면서 개념을 정리했다. 예시마다 이해가 쉽지않아서 시간이 오래걸렸다🥺▶ 동시성 이슈란? 동시성 문제(concurrency issue)란, 여러 사용자가 동시에 같은 자원 (데이터, 메모리 등)에 접근하거나 수정할 때 발생하는 문제를 의미한다. 결제 시스템에서는 이러한 문제가 심각한 버그나 금전적 손실로 이어질 수 있어 특히 주의가 필요하다. ▷ 온라인 쇼핑몰에서 100개 한정판 상품을 판매한다고 가정했을 때 : 재고 관리 문제 public class InventoryService { // 주문을 처리하는 메서드 public void processOrder(Long pro..
팀 프로젝트 발표가 끝나고 받은 피드백의 키워드는 stateless 와 JWT!대체 이 개념을 이해하는게 얼마나 웹 애플리케이션 설계에 얼마나 중요한건가 싶어서 다시 정리를 해보았다. ▶ stateless 란? 웹 애플리케이션에서 서버가 클라이언트의 이전 요청에대한 정보를 전혀 기억하지 않는 것을 의미한다. 서버는 각 요청을 독립적으로 처리하고, 이전 요청과의 연관성을 전혀 가지지 않는다. 예를 들어 사용자가 웹 사이트에서 로그인했다고 해서 서버가 그 사용자의 로그인 상태를 기억하는 것이 아니라, 매 요청마다 그 사용자가 누구인지 다시 확인해야한다. 이렇게 하면 서버가 더 간단해지고 여러 서버에서 요청을 분산 처리 하기도 쉽다. 이를 수평적 확장성이라고도 한다. ▶ JWT란? JWT는 이러한 state..
"상태 : 채팅방의 내용등 변수로써 가지고 있으면 안되는 것......?" 서버가 상태를 가지고 있다면 각 서버간 상호작용을 할 수 없게 된다. 서버는 고정적인 게 아니라 변동적인것 이기 때문이다. ( 서버 이용 상황에 따라 늘리고 줄이고 하기때문에 ) 이런 이유로 SSE에도 상태를 가지고 있으면 안된다. 김선용 멘토님이 말씀하신 " 서버가 상태를 가지고 있으면 안된다 " 는 서버가 클라이언트의 상태 정보를 직접 저장하거나 유지하지 않는 것이 좋다는 것을 의미한다. 이 원칙은 서버 아키텍처의 확장성과 안전성을 보장하기 위한 중요한 개념으로 여기서 상태(State)란 예를들어 채팅방의 내용, 로그인 세션, 사용자 별 설정 등 클라이언트와의 상호작용에 따라 달라지는 데이터를 말한다. 이 원칙이 중요한 이..
드디어! 드디어!!! 팀 프로젝트 둘째 주가 되서야, 7조에 합류하게 되었다🥹!! 공식적인 합류는 아니지만 이렇게라도 합류하게 되어서 정말 제대로된 협업을 경험하게 될 것 같아 많은 기대 중! 오늘은 퇴물도살자 팀에서 처음으로 개발일지에 참여하는 날이라, 일단 초대된 노션과 슬랙채널에서 자료들을 살펴보며 프로젝트에 참여하기 위한 준비를 하고있다. 제의를 받은 첫날부터 팀원들끼리 오고가는 다정한 말투와 작은 거 하나도 같이 논의하는 모습을 보고 이런게 소통이구나 충격을 받았고, 활발한 팀원들의 채팅방, 실시간으로 이루어지는 팀원들의 소통을 보며 이렇게 진행되야 프로젝트가 이루어질수가 있겠구나 란 걸 많이 체감하는 중이다. 프로젝트에서 MVP달성 등등 중요한 게 많지만 성공적으로 이루어지기 위한 중요 요..