본문 바로가기

Issue

(7)
소셜 네트워크 앱 개발 프로젝트 아키텍처 고민 및 해결 과정 업체(이하 클라이언트)를 통해 특정 컨셉을 지닌 소셜 네트워크 및 메신저 어플리케이션의 외주를 진행하게 되었다. 이후 최종적으로 계획하고 있는 프로젝트의 규모가 작지 않기도했고, 일정이 타이트하게 구성되는 등의 문제로 나와 지인 한 분이 백엔드 및 인프라 구축을 맡게되었고, 지인을 통해 소개받은 플러터 개발자 분께서 앱개발을 맡아 진행하기로 하였다. 정확한 컨셉을 공개할 순 없지만, 몇몇의 주요한 기능들을 중심으로 어떻게 아키텍처를 설계했는지 이야기해보도록 하겠다. 사진, 동영상의 멀티미디어를 통한 실시간 채팅 (메신저) 소셜 네트워크 서비스 특정 사진, 동영상(멀티미디어)의 AI분석 (추후 개발) TTS 관련 서비스 (개인 사용자 목소리 기반) SNS 간편 로그인(OAuth 2.0) 알림 기능 모놀리식..
JWT 토큰 자동 갱신: 안전한 인증 시스템 구축하기 (React) JWT 토큰 기반 인증의 중요성 및 클라이언트 사이드에서의 관리 올해 대학교 구성원 및 외부 인원들과 함께 팀 활동으로 규모가 그리 크지 않은 시장을 타겟팅하는 새로운 플랫폼 구축을 진행하는 프로젝트를 진행하고 있다. 해당 프로젝트를 진행하며 웹의 클라이언트 사이드를 위주로 맡고 있고, 백엔드의 서브 개발자로 참여하고 있다. 이 프로젝트에서 마찬가지로 사용자 인증 및 로그인 관련 로직은 JWT 토큰 기반 인증 방식을 사용하게 되었고, 그 과정 속 발생한 두가지 문제에 대해 다뤄보려고 한다. (이번 글에서는 JWT(JSON Web Token)에 대한 개념을 정리하기보단 다루면서 생겼던 이슈에 대한 해결 방법을 위주로 다뤄보려고 한다.) 문제정의 만료된 JWT 토큰으로 인한 사용자 경험 저하 문제 JWT 토..
순환 참조 문제 / Go언어(Golang) 게임서버 순환 참조의 개념 순환 참조란 두 모듈이 서로를 직접 또는 간접적으로 참조할 때 발생한다. 이는 컴파일 타임에 해결되지 않으면 런타임 에러로 이어지며, Go에서는 패키지 간 잘못된 의존성 구조로 인해 이런 문제가 발생한다. ( Go에서는 컴파일 타임에 아래와 같은 import cycle not allowed 와 같은 컴파일 에러를 반환하여 알려주긴 한다) 순환 참조가 야기하는 문제점 컴파일 에러 : 컴파일 에러가 난다면 그나마 다행이지 않을까 싶다 단위 테스트가 어렵고 비용이 증가 : 의존적인 모듈들이 함께 테스트 되어야하기 때문에 단위적인 테스트가 어렵고 비용이 증가한다 가독성이 저하되고 유지보수의 어려움 증가 문제 상황 및 배경 Go언어를 이용해 한글을 타이핑하여 스킬 사용 및 공격 등을 진행하는 게..
[Docker] 도커 컴포즈를 통해 도커를 관리하다 생긴 문제들 - (2) (Docker Compose) 이번 방학에 팀으로 프로젝트를 하나 진행하고 있었다. 게임제작과 관련된 부분인데 해당 프로젝트에서 서버 쪽을 담당하게 되었다. 기간은 올해 말까지로 예상중이고, 해당 프로젝트에서 방학에는 인증서버 제작과 Docker를 사용해 보는 것이 목표였다. 저번 포스팅에선 Docker Network를 이용해 컨테이너간의 통신에 관련한 문제를 해결하는 포스팅을 작성하였다. 이번 포스팅에는 Docker Compose를 작성하여 ScyllaDB, redis, 인증서버를 한 번에 컨테이너화 시켜 관리하는 과정과 그 과정에서 생긴 사소한 이슈를 해결하는 과정을 작성했다. 1) 여러 컨테이너를 한번에 관리해 보자 컨테이너는 현재 3개 존재한다. [scylla, redis, 인증서버] 하지만, 이후에 게임에 필요한 서버들과 각..
[Docker] 도커 컴포즈를 통해 도커를 관리하다 생긴 문제들 - (1) (Docker Network) 이번 방학에 팀으로 프로젝트를 하나 진행하고 있었다. 게임제작과 관련된 부분인데 해당 프로젝트에서 서버 쪽을 담당하게 되었다. 기간은 올해 말까지로 예상중이고, 해당 프로젝트에서 방학에는 인증서버 제작과 Docker를 사용해 보는 것이 목표였다 1) 도커로 로컬환경을 공유해보자 아직 도커라는 것에 대해 이론적으로 부족한 부분들이 많았고, 내 로컬환경의 도커에서 사용 중인 ScyllaDB와 Redis 그리고 로컬에서 동작하는 Golang으로 제작된 인증서버도 Dockerfile로 빌드해서 컨테이너로 만든 뒤에 이 3개의 컨테이너를 다른 사람들에게 쉽게 공유할 수 있게 해보고 싶은 막연한 생각으로 시작해 보게 되었다. 2) 인증서버를 Docker로 관리해 보자 기존에는 Docker를 통해 Scylla, Re..
CODEF를 이용한 API 일괄처리 시스템을 만들다 생긴 문제들 (OAUTH 2.0 인증, 간편인증) 최근 CODEF API를 이용해 여러 개의 금융정보와 관련된 API를 일괄적으로 받아 관리하는 웹페이지를 만드는 작업을 진행하였습니다. 요청 API 리스트 [고용산재] - 근로자고용정보현황조회 - 보수총액신고서 [국세청] - 신고서 법인세 과세표준 및 세액신고서 - 종합소득세, 농어촌특별세, 주민세 과세표준확정신고 및 납부계산서 - 신고서 표준대차대조표 - 신고서 표준손익계산서 - 신고서 법인세 과세표준 및 세액조정신고서 - 신고서 세액공제명세서 - 신고서 사업소득명세서 - 신고서 공제감면세액 및 추가납부세액합계표(갑) - 증명발급 사업자등록 증명 이렇게 총 11개의 API를 카카오를 이용한 간편 인증을 통해 회원정보를 등록해 관리할 수 있도록 하는 애플리케이션인데 나는 카카오계정 간편 인증 연동과 AP..
Google Map API을 다루다 생긴 문제들(geolocation, CORS에러) 전역 후 일단 개인적인 공부도하고~ 알바도하고~ 다 해보는 와중.. 고등학생 때부터 종종했었던 외주를 다시 시작하며 다시 웹사이트를 만들게되었다. 간단한 웹 개발을 도와드리는 외주를 맡게 되었다. 그 과정에서 "Map API"의 사용을 돕게 되었는데,, 1) 첫번째 이슈 - 어떤 종류의 Map API를 사용해야할까 ? 구글 Maps API, 카카오맵 API, 네이버지도 API와 같은 여러 API가 존재했는데, API를 이용해 주변 음식점들에 대한 검색과 정보들을 가져와야 했기에 구글 Maps API는 제외하고, 카카오맵 API를 원하셔서 카카오맵 API로 도와드리게되었다. 카카오맵은 도메인을 입력하여 해당 도메인에서만 사용할 수 있는 특정 Key값을 받아서 사용해야하기 때문에, 일단 간단하게 페이지를 만..