본문 바로가기

전체 글77

[Spring] 카카오 OAuth 소셜로그인 구현(사용자 추가 동의 포함) 클라이언트 측은 리액트를 사용한다.이에 SpringBoot에서 OAuth 방식으로 RestApi 앱키를 이용해 로그인을 구현했다.사실 카카오 로그인은 꽤 여러번 구현 경험이 있었지만1. 매번마다 소셜로그인 방식이 달랐고(OAuth, SDK 등),2. 예전에는 사용자 이메일을 필수 동의 항목으로 받아와 데이터베이스 pk값으로 두는 방식으로 개발을 했었는데,현재는 사용자 이메일을 받아올 수 없고 사용자 카카오Id를 받아오는 방식으로 바뀌며 기존에 쓰던 카카오 로그인 코드 재활용을 못하게 됐고3. 오늘 카카오 로그인을 구현하며 배운 새로운 사실은..사용자에게 동의 항목을 받아올 때, 추가 항목이 있다면( 나는 알림톡 기능을 구현하고자 알림톡 전송, 캘린더 일정 생성 등 추가 동의 항목을 설정했다. ) 기존 카.. 2024. 6. 27.
데이터베이스: SQL과 NoSQL SQL 데이터베이스 SQL 데이터베이스는 정확하고 엄격한 데이터 구조를 가지고 있어, 마치 데이터베이스와의 의사소통을 위해 잘 정의된 언어를 사용하는 것과 같습니다. 이는 데이터베이스와의 통신을 명확하고 예측 가능하게 만듭니다. [장점] 정확한 데이터 구조: 데이터의 일관성과 정확성을 보장합니다. 복잡한 쿼리 지원: 데이터 관계를 효율적으로 관리하고 복잡한 데이터 분석을 가능하게 합니다. 트랜잭션 관리: 데이터의 무결성을 유지하는 데 필수적인 ACID 속성을 지원합니다. [단점] 확장성의 제한: 수평 확장이 어렵고 주로 수직 확장(서버의 성능 향상)에 의존합니다. 스키마 변경의 어려움: 초기에 정의된 데이터 구조의 변경이 까다롭습니다. [적합한 상황] SQL 데이터베이스는 금융 거래, 회계 시스템 등 엄.. 2024. 4. 10.
카카오소셜로그인에 관하여.. 예전부터 카카오 소셜로그인이나 그외 구글, 네이버, 애플 등의 소셜로그인을 구현할 때, 인가 토큰을 받고, 해당 토큰을 통해 사용자이름, 닉네임, 이메일, 연락처, 프로필 이미지와 같은 값들을 property로 받아와 사용자의 email을 pk로 user 엔티티를 구성했었다. 근데 24년 1월 2월 프로젝트 중, 카카오톡 소셜 로그인 기능을 구현하다보니 넘겨받는 property 정보가 카카오톡 기준 닉네임과 프로필 이미지 만으로 제한되는 문제가 발생했다. 그 이상의 정보를 사용자 동의를 통해 얻어내기 위해서는 사업자 번호(였나?)가 필요했다. 하지만 닉네임은 사용자의 고유값이 아니기 때문에 해당 정보를 pk로 처리할 수 없어 로그인 기능을 수정하고 수정하고 또 수정하다가 결국은 자체 로그인으로 구현을 했.. 2024. 3. 22.
서버리스 아키텍처 서버리스 아키텍처(Serverless Architecture) 서버리스 아키텍처를 이해하는 것은 마치 "음식 배달 앱을 통해 원하는 음식을 주문하고 집에서 편안히 즐기는 것"과 같습니다. 우리는 직접 요리할 필요 없이, 원하는 음식을 선택해서 주문하기만 하면 됩니다. 여기서, 우리가 주목해야 할 점은, 요리하는 복잡한 과정을 거치지 않고도 원하는 결과를 얻을 수 있다는 것입니다. 마찬가지로, 서버리스 아키텍처에서는 개발자들이 서버를 직접 관리하는 데 드는 시간과 비용을 줄이면서, 애플리케이션의 개발과 운영에 더 집중할 수 있게 해줍니다. [서버리스의 특징] 서버리스는 "서버 없음"을 의미하지 않습니다. 클라우드 제공 업체가 인프라 관리를 자동으로 처리하기 때문에, 개발자 입장에서 관리할 서버가 없다 라는.. 2024. 3. 16.
MA와 MSA 구조 모놀리식 아키텍처(MA) 모놀리식 아키텍처는 마치 "대형 마트에서 사고자 하는 물품 쇼핑을 한번에 할 수 있는 것" 과 같습니다. 당연히 마트 한 곳에서 모든 물품을 살 수 있기 때문에 편하고 구매 속도가 빠르겠죠! 하지만 마트가 문을 닫는다면 아예 물품을 못사기도 하겠네요😞 쇼핑몰 어플리케이션을 예로 들면, 사용자의 로그인부터 주문, 상품 정보 등 모든 기능(마트에서 사고자 하는 물품)이 하나의 거대한 프로젝트(대형 마트) 안에서 통합 관리되고 개발되는 것입니다. [모놀리식 아키텍처의 장점] 특히 작은 팀이나 간단한 프로젝트에서는, 속도감 있는 프로토타이핑과 배포의 단순함을 추구하며 주로 모놀리식 방식을 택합니다. 이런 접근법은 프로젝트의 아키텍처를 간단히 유지할 수 있게 해 주어, 디버깅이나 테스팅,.. 2024. 3. 15.
캡스톤 매칭 결과 오늘은 캡스톤 매칭 결과가 나왔다. 내가 해야하는 과제는 레몬 클라우드의 실시간 공동 라벨링 작업 이다. 지금까지 주어진 정보는 과제 개발 개요 작업자와 검토자가 동시에 접속함 작업자의 선택화면과 작업상대가 실시간 표시됨 검토자가 작업상태를 검토하고 라벨링 데이터를 수정하면 실시간 업데이트 되어 표시됨 온라인 채팅 기능으로 팀원간의 커뮤니케이션 가능 개요를 보면 동시에, 실시간, 채팅과 같은 기능 설명들이 눈에 띈다. 채팅 관련 기능을 노드에서 구현해봤지만 작동 방식이 완벽하게 이해가 되진 않았었기에 채팅을 다시 한번 구현해봤으면 했다. 특히 알림은 SSE 방식으로 구현을 했는데 그 차이에 대해서도 좀 고찰을 해보는 기회가 됐으면 좋겠다. 플젝 투두리스트? 위시리스트? 이런거 좀 만들어서 정리해봐야겠다... 2024. 3. 14.