졸프: 라즈베리파이와 MSA를 곁들인

2025. 4. 10. 23:53·프로젝트에서 일어난 일

1. 개요

나는 4학년 1학기 졸업프로젝트를 진행 중이다.

졸업 프로젝트 주제는 학교 안내 홈페이지를 만드는 것!

사실 키오스크를 만드려다가 학교에서 부품 지원을 안해줘서 키오스크는 포기했다...

 

졸업 프로젝트에서 나는 다음과 같은 도전?을 해보려고 한다.

 

1. MSA 적용

2. 학과서버가 아닌 라즈베리파이 NAS서버 사용

 

2. Why?

 

MSA를 적용하는 이유 1

올해 3월 초 개강 첫주차에 학교 홈페이지가 마비된 적이 있다.

그런데 문제는 사이버캠퍼스까지 같이 마비가 되어버린 것이다. 즉, 학교와 관련된 모든 사이트가 접속이 안된 적이 있다.

위 사진처럼 3시에 온라인 수업이 있고 해당 온라인 접속 링크가 사이버캠퍼스에 있다.

결국 사캠이 안들어가져서 온라인 수업을 못듣는 상황이 발생...

학교측에 문의를 해봐도 서버가 터졌다. 마비됐다 라는 답만 올 뿐. 정확한 이유는 그분들도 모른다. (학사처 사람들이 개발자는 아니니까)

 

나는 이 문제의 원인이 학교 관련 서버가 모놀리식으로 구성되어있기 때문이라고 생각한다. 만약 학교 홈페이지, 학교 사이버 캠퍼스가 분리된 서비스라면 학교 홈페이지가 터졌어도 학교 사이버 캠퍼스는 잘 동작했을 것이다.

 

MSA를 적용하는 이유 2

방학 중에 MSA에 강의를 들으면서 코드를 따라쳐보긴 했으나 프로젝트로 해보고 싶었다.

물론 졸프에서 구현한 MSA가지고 현업에서 충분히 녹여낼 수 있을거라는 기대는 적지만, 강의만 따라 쳐본거랑 내가 직접 프로젝트로 구현하는 건 천지차이라고 생각한다.

 

 

학과 서버가 아닌 라즈베리파이를 사용하는 이유

학과 서버의 스펙은 나쁜 편은 아니다. 그러나. 졸업 프로젝트 발표회가 다가올 수 록 사용량이 급증한다. (약 20개 팀)

그래서 에타도 보면 다음 처럼 학과 서버가 접속이 잘 안되는 걸 확인할 수 있다. 학과 서버에 여러팀이 접근하고 심지어 GPU를 사용해서 AI 모델 학습까지 하니 그런거 같다... 어느 팀이 AI 모델 학습을 빡세게 돌리면 그팀 제외하고 모두 접속이 안된 적도 있었다.

 

+ Docker를 사용할 수 없다.... Podman을 사용하라고 한다. (sudo 권한을 주지 않기때문...)

+ 제약사항이 너무 많다.

 

AWS가 아닌 라즈베리파이를 사용하는 이유

AWS EC2로 MSA를 구현해본 적은 없다. 그러나 micro t2에서 스왑 메모리 설정을 안할 경우(RAM 1G) Docker 백엔드 하나만 굴려도 가끔 CPU가 터지는 상황이 발생했다. 스왑 메모리 설정을 할 경우 그런 적은 없었다.

 

현재 나는 apigateway, discovery-service, building-service, class-service, mudang-service, movement-service 이렇게 6가지 마이크로 서비스를 생각해놨다.

이 6가지 마이크로 서비스를 스왑 메모리 설정한 micro t2 가 버틸 수 있을까..?

 

백엔드 친구 말로는 현재 Docker Spring Contrainer 2개로도 간당간당하다고 한다.....

그렇다고 t3로 올리기엔 돈이 많이 든다.

 

그래서 나는

집에있는 라즈베리파이를 홈서버로 사용하고자 한다.

 

내가 가지고 있는 라즈베리파이4 는 RAM 4G, 저장공간 128G, 1.5GHz의 쿼드코어 CPU를 가지고 있다.

추가로 나는 스왑메모리 설정을 통해 2G를 추가로 확보할 생각이다.

이정도라면 마이크로서비스 6개는 감당할 수 있을거라 생각한다.

 

 

3. 예상되는 문제점

 

1. 라즈베리파이 보안

라즈베리파이 홈서버를 전에 구축했을 때 중국과 러시아에서 접속시도가 많았다...

Fail2ban과 GeoIp를 사용해봤지만 가장 좋은 방법은 포트번호와 사용자 비밀번호를 주기적으로 바꾸는 게 가장 좋다.

(이래서 주기적으로 비밀번호를 바꾸라고 안내하는 구나 싶다 ㅋㅋ)

 

2. 라즈베리파이 + MSA CI/CD 구축하기

MSA CI/CD를 구축해본 적은 없어서 약간 헤맬 거 같다.

이틀 밤새면 되긴 되겠지ㅋㅋㅋ

 

3. MSA를 Cloud Server에 구축하기

로컬에서는 그냥 Spring Application 구동하고 localhost로 서로 연결시키면 되는데 Cloud Server에서는 해본 적이 없어서 이것 또한 헤맬 거 같다.

그래도 Docker Network로 묶어서 하면 되지 않을까?

 

4. 처음하는 팀원분

같이 하는 백엔드 팀원분이 프로젝트 처음이셔서 이해할 수 있을 지 모르겠다.

내 욕심으로 MSA로 진행하는 거라 내가 책임지고 많이 도와드려야 한다.

세세하게 업무를 배정해드리고 포기하지 않게 뒤에서 밀어드려야겠다.

제안서 -> 설계서 단계까지 끝난 현재 시점에서 김영한 무료 강의와 Spring Boot 책 한 권 끝내오라고 했다.

강제로 레벨업 시키고 있다. 그 분도 의지가 있어서 잘 따라와주시고 있다.

Jira로 스터디 계획 짜서 과제처럼 내주고 있당. 화이팅..!

 

 

'프로젝트에서 일어난 일' 카테고리의 다른 글

다수 데이터 Insert 시 성능 개선하기(37.06% 개선)  (1) 2025.04.16
같은 객체에 대해서 OneToMany를 두번 사용할 경우  (0) 2025.04.14
Jwt토큰 인가 검증에서 일어난 간단한 사건!  (0) 2025.02.04
N+1 싹둑(Slice)해버리기  (0) 2025.02.01
카카오, 구글 통합 로그인 中 (의사소통의 중요성)  (0) 2025.01.16
'프로젝트에서 일어난 일' 카테고리의 다른 글
  • 다수 데이터 Insert 시 성능 개선하기(37.06% 개선)
  • 같은 객체에 대해서 OneToMany를 두번 사용할 경우
  • Jwt토큰 인가 검증에서 일어난 간단한 사건!
  • N+1 싹둑(Slice)해버리기
송우석입니다
송우석입니다
  • 송우석입니다
    송우석
    송우석입니다
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (135) N
      • JAVA (1)
      • 자바 알고리즘 문제풀이 (82) N
        • 백준 (8)
        • String(문자열) (12) N
        • Array(1, 2차원 배열) (12)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
      • 일상 (19)
      • Github (1)
      • MSA 공부 (3)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (13)
      • FrontEnd 공부 (3) N
        • React (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
송우석입니다
졸프: 라즈베리파이와 MSA를 곁들인
상단으로

티스토리툴바