프로젝트 37

[토닥] 경계선 지능인을 위한 앱 서비스 CI/CD 파이프라인 구축

개요마이크로서비스 아키텍처 기반의 프로젝트에서 효율적인 배포를 위한 GitLab CI/CD 파이프라인 구축에 대해 다룬다.프로젝트는 API Gateway, Auth Service, Relation Service, Profile Service로 구성된 백엔드 서비스들과 React 기반 프론트엔드, 그리고 AI 서비스들로 이루어져 있다.각 서비스별로 독립적인 배포가 가능하도록 브랜치 기반 배포 전략을 사용하며, Docker를 통한 컨테이너화된 배포 환경을 구축한다.GitLab Runner를 활용하여 자동화된 빌드와 배포 파이프라인을 구성하고, 환경 변수를 통한 보안적인 설정 관리를 적용한다. 현재 CI/CD 파이프라인 구성:백엔드 서비스: API Gateway (8080), Auth Service (8081..

[토닥] 경계선 지능인을 위한 앱 서비스 서버 초기 세팅 및 Redis 설정

개요프로젝트 배포를 위한 Ubuntu 서버의 초기 환경 설정과 Redis 컨테이너 구성에 대해 다룬다.서버 초기 세팅은 시스템 업데이트, 필수 패키지 설치, 보안 설정, Docker 및 GitLab Runner 설치를 포함한다.Redis는 프로필 서비스의 토큰 관리와 관계 서비스의 세션 관리를 위해 사용되며, Docker 컨테이너로 구성하여 다른 마이크로서비스들과 동일한 네트워크에서 통신할 수 있도록 설정한다.전체 시스템은 마이크로서비스 아키텍처로 구성되어 있으며, 각 서비스는 독립적인 컨테이너로 실행되면서 공통 네트워크를 통해 연결된다. init.sh# 패키지 목록 업데이트sudo apt update# 설치된 패키지 업그레이드sudo apt upgrade -y# 불필요한 패키지 제거sudo apt a..

[토닥] 경계선 지능인을 위한 앱 서비스 프로필 서비스 Profile-Service

개요해당 프로젝트는 경계선 지능인을 위한 종합적인 프로필 관리 서비스를 제공한다.경계선 지능인과 일반 사용자는 자신의 기본 정보를 관리할 수 있으며, 경계선 지능인의 경우 추가적인 특성 정보(생년월일, 성별, 특별한 도움이 필요한 사항 등)를 관리할 수 있다.상점 관계자는 상점의 정보를 등록하고 관리할 수 있으며, 상점 이미지를 포함한 상세 정보를 제공할 수 있다.모든 이미지 파일은 AWS S3에 안전하게 저장되며, 프로필 조회 및 수정 기능을 통해 사용자가 언제든지 자신의 정보를 관리할 수 있다.또한 관계 설정을 위한 임시 토큰 생성 기능을 제공하여 다른 서비스와의 연동을 지원한다. 프로젝트 구조 API 명세서 config.AwsS3Config.javapackage com.a102.profile...

[토닥] 경계선 지능인을 위한 앱 서비스 관계 서비스 Relation-Service

개요해당 프로젝트엔 여러가지 관계가 존재한다.경계선 지능인은 센터, 부모, 가게 및 친구들과 관계가 존재한다.센터는 경계선 지능인과 가게에 대한 관계가 존재한다.부모는 경계선 지능인과 관계가 존재한다.이러한 관계 설정을 통해 웹 및 앱 서비스에서 자신과 관계가 맺어진 객체들과 상호 작용을 할 수 있다.관계 서비스는 이러한 관계를 생성, 업데이트, 삭제하는 비즈니스 로직을 수행한다.주체가 여러가지이기 때문에 코드가 가장 많은 서비스이다. 초기 기획 단계에서 부모가 경계선 지능인에 대한 관리 서비스도 기획하였으나 실제 경계선 지능인의 부모를 만나 인터뷰를 진행하지는 못했기 때문에 부모와 경계선 지능인에 대한 관계 설정은 별도로 구현하지는 않았다. 관련 내용은 생략하도록 하겠다. 프로젝트 구조API 명세서 ..

[토닥] 경계선 지능인을 위한 앱 서비스 인증 서비스 Auth-Service

개요우선 앱과 웹을 사용하기 위해선 사용자가 필요하다. 사용자 편의성을 위해 OAuth 기반의 소셜 로그인과 같은 기능은 구현하지 않았고 이메일을 통한 회원 가입을 진행하였다. 구글 SMTP을 통한 이메일 인증 절차도 구현할지 논의를 하였지만 프로젝트 특성상 규모가 크지 않을 것을 고려하여 별도 검증 절차를 넣지 않은 점은 참고 바란다. 인증 서비스는 MariaDB를 통해 회원 정보를 관리하였고, 프로필 사진과 같은 데이터를 처리하기 위해 AWS S3를 사용해 스토리지에 프로필 이미지를 저장, URL기반의 이미지 파일 관리를 구현하였다. 또한 사용자 식별을 위해 로그인 시 JWT토큰을 발급하고, 만료된 토큰일 경우 토큰을 갱신해 주는 로직이 주된 서비스의 기능이다. API 문서 소스 코드는 config..

[토닥] 경계선 지능인을 위한 앱 서비스 API 게이트웨이

개요MSA 아키텍처 구현을 위한 API 게이트웨이 서버를 구현하였다. 해당 서버의 역할로는 클라이언트 요청에 따른 URI를 분리하여 각 마이크로서비스로 요청을 라우팅하기 위함에 있다. 이와 같은 요청 분산을 통해 서버 과부하를 방지할 수 있었다.또한 JWT토큰 검증 시스템을 통해 만료된 토큰을 식별하고 게이트웨이 방화벽만 열어두어 마이크로서비스로의 직접적인 요정이 불가능 하도록 보안을 강화하였다. 이는 Java Security를 통해도 구현하였지만 개발 환경에서 Swagger등을 통한 API 명세 및 테스트 환경을 위해 일부 기능을 열어두었다. 이 외에도 CORS세팅, Swagger통합 문서 관리, 로깅 시스템 구축 등 다양한 기능을 담당하는 서버로 개발하였다. 디렉토리 구조 설정 파일 관련 confi..

[토닥] 경계선 지능인을 위한 앱 서비스 시스템 아키텍처 구현

개요백엔드 개발자로서 현재 프로젝트에서 API 게이트웨이 기반 MSA아키텍처 구현과 전반적인 인프라 세팅을 맡았다. Docker 기반 서비스 컨테이너 관리나 CI/CD 파이프라인 구현같은 경우 이미 이전 프로젝트를 진행하며 경험을 쌓았기 때문에 인프라 구현에 딱히 어려운 일은 없었다.API 게이트웨이 또한 따른 시간 내에 구현을 완료하였고, Java 기반의 SpringBoot와 Python 기반의 FastAPI 웹 프레임워크를 같은 마이크로서비스로 묶은 경험도 매우 뜻깊었다. 또한 RDS, S3 등 클라우드 DB와 스토리지를 활용한 것도 주요 경험이 되었다. 각설하고 이번 프로젝트에서 시스템 아키텍처를 어떻게 설계했는지 기록을 남기고자 한다. 시스템 아키텍처 우선 API 게이트웨이, 마이크로서비스와 K..

[토닥] 경계선 지능인을 위한 앱 서비스 프로젝트 기획

개요경계선 지능인을 위한 앱 서비스를 개발하겠다는 방향성은 잡았으나 실제로 무엇을 개발해야 할지는 기획 단계에서 꽤나 큰 난제가 되었다. 우리가 경계선 지능인의 입장이 되어 어떤것이 정말로 필요한지를 몰랐기 때문에 그저 우리의 뇌피셜로 기능 개발하기엔 큰 리스크가 있었다. 하지만 노원구 경계선 지능인 지원센터를 방문하여 관련 담당자와의 인터뷰를 통해 어떤 기능들을 개발해야 할지에 대해 더욱 명확해 졌다.[토닥] 경계선 지능인을 위한 앱 서비스 프로젝트 개요 [토닥] 경계선 지능인을 위한 앱 서비스 프로젝트 개요개요삼성 청년 SW 아카데미의 마지막 자율 프로젝트로 느린 학습자를 위한 서비스 어플리케이션 개발을 진행하기로 했다.주 목적은 경계선지능인의 삶에 조금이나마 도움이 되고자 하는 앱을zzzz955.t..

[토닥] 경계선 지능인을 위한 앱 서비스 프로젝트 개요

개요삼성 청년 SW 아카데미의 마지막 자율 프로젝트로 느린 학습자를 위한 서비스 어플리케이션 개발을 진행하기로 했다.주 목적은 경계선지능인의 삶에 조금이나마 도움이 되고자 하는 앱을 개발하는 것이다. 타겟은 경계선지능을 가진 성인 및 청소년이 주 사용자이며, 보호자 및 센터를 보조 사용자로 결정하였다. 주 사용자는 어플리케이션을 통해 활동을 이어가며 보조 사용자는 웹 앱을 통해 자신이 돌보는 경계선지능인에 대한 관리를 해줄 수 있다. 핵심 가치는 경계선지능인의 자립성 강화, 정서적 성장, 직업 역량 개발, 사회적 연결을 지원하여 더 나은 삶을 즐길 수 있도록 구상하였다. 기획 배경관련 유튜브 영상을 본 기억에 의해 해당 주제를 기반으로 한 프로젝트를 진행하고자 마음 먹었다. 경계선지능인은 IQ71~85..

[SmashUp!] 캐쥬얼 배틀로얄 프로젝트 트러블 슈팅

개요게임 소켓 서버 개발을 하면서 다양한 문제점들이 발생하였다, 대부분 사소하게 무언가 빼먹던가 메모리 관리가 제대로 되지 않아 누수가 있어 발생한 문제들로 API호출 요청에 실패하거나 서버가 다운되는 크리티컬한 이슈 등 라이브 환경에서 일어나면 안될 버그가 있었다. 이슈 발생이 의심되는 부분의 코드 검토와 디버깅 로그를 삽입하여 동작 테스트를 하며 대부분의 이슈는 해결이 되었지만, 클라이언트와 통신을 통해 발생하는 경우 해당 이슈가 클라이언트에서 발생하는지, 서버에서 발생하는지에 대해 알기 어려웠다.다행히 클라이언트의 네트워크 부분을 담당하는 팀원과 자주 소통을하여 문제점을 하나하나 잡아가기 시작했고, 이러한 소통을 통해 트러블 슈팅을 더 빠르게 해결한 경험이 되었다. 하기에 내가 프로젝트를 진행하며 ..

728x90