Skip to content

chohanjoo/mwohae

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MWOHAE

GitHub license Docker Images Version

Kubernetes Microservice SNS Project

쿠버네티스로 관리하는 마이크로서비스 아키텍처의 Social Networking Service이다. Frontend는 ReactJS , Backend는 springboot,mysql,spring cloud Netflix Oss 를 사용하여 개발했다.

Project Architecture

mwhae

Face

🔗 Port : 3030 (dev port : 3000)

ReactJS 로 개발된 UI 이다. MATERIAL-UI 라이브러리를 사용하여 UI를 그렸으며 REST API를 호출하여 백엔드와 커뮤니케이션 한다.

Auth

🔗 Port: 8080

springboot 로 개발된 Authentitation REST API Server 이다. stateless 를 유지하기 위해 JWT 토큰을 사용한다. 후에 Gateway와 User Project로 합칠 예정이다.

User

🔗 Port: 8081

springboot 로 개발된 User REST API Server 이다.

Post

🔗 Port: 8082

springboot 로 개발된 Post REST API Server 이다.

Generator

🔗 Port: 8079

springboot 로 개발된 랜덤 유저, 포스트, 친구 생성기 REST API Server 이다. Admin 계정만 접근 가능하다.

필요시에만 deploy 시킨다. 서비스에는 필요없다.

API Gateway

🔗 Port: 8000

Spring Cloud Netflix API Gateway인 Zuul API Gateway 이다.

Service-registry

🔗 Port: 8761

Spring Cloud Netflix Service Registry인 Eureka Service registry 이다.

How to Install or Run

[ Dev ]

node , java 8, Mysql 이 설치되었음을 가정한다.

개발환경은 Mac OS임을 밝힌다.

Mysql

$ mysql.server run

Generator

  • Add External Library

    (1). Intellij - File - Project Structure - Libraries - (+) 을 누른다.

    (2). oss/Oss External Libraries/Markov.jar 과 wordnet-random-name.jar 를 추가한다.

Run

$ cd shell_script

$ ./run.sh

Generator

$ cd generator

$ ./mvnw -U clean install

$ java -Dspring.profiles.active=prod -jar target/*.jar

[ Live ]

DockerKubernetes 가 설치되었음을 가정한다.

Maven build

$ cd shell_script

$ ./mvn_install.sh

Docker build

$ cd shell_script

$ vim make_docker_images.sh
VERSION='the version you want'

$ ./make_docker_images.sh

Pod, Deployment, Service Create

$ cd shell_script

$ ./apply.sh
Generator (pod. Deployment, service create)
$ cd generator

$ ./mvnw -U clean install

$ docker build -t chohanjoo/mwohae-generator:v0.1.2 .

$ kubectl apply -f ../kubernetes/deployment/generator_deployment.yaml

Mysql Pod Create

$ cd shell_script

$ kubectl apply -f mysql-pv-volume.yaml
$ kubectl apply -f mysql-deployment.yaml

Verification

$ kubectl get all

port forwarding

$ kubectl port-forward svc/gateway 8000:8000

$ kubectl port-forward svc/face 3000:3000

💲 localhost:3000 으로 접속한다.

REST API Document [Swagger]

  • 1> Eureka - localhost:8761
  • 2> Generator - localhost:8079/swagger-ui.html
  • 3> Auth - localhost:8080/swagger-ui.html
  • 4> User - localhost:8081/swagger-ui.html
  • 5> Post - localhost:8082/swagger-ui.html

Documentation

Database Schema

Used Open Source

도커 이미지 생성 및 쿠버네티스 배포

Kubernetes Mysql Pod 생성

Spring Cloud Netflix

Examples

newsfeed

profile

deshboard

kiali

License

Mwohae is MIT licensed .

Todo

  1. Jwt 토큰 만료후 페이지 접근하면 오류 발생 (Jwt 토큰 만료 체크)**

2. Profile - 추천 친구 리스트에서 친구 리스트 제외 [feature/#7]

2-1. 추천 친구 알고리즘 추가 - 함께 아는 친구 순

  1. Login 후 token 저장 실패시 오류 발생

4. Post - 최근 내 게시글 + 친구들 게시글 [feature/#7]

  1. 3개의 서비스에 중복되는 코드 존재 (mysql query 중복 문제 해결)

  2. [ 스프링 부트를 이용한 마이크로 서비스 개발 ] 책 p.195 인스턴스 종료시 에러 해결하는 로드 밸런싱 전략 미세 조정 및 하이스트릭스로 서킷 브레이커 구현 시 에러 발생

7. 간헐적인 CORS 문제 발생 [feature/#15]

  1. 현재 Spring Security가 모든 MSA service에 포함되어 있지만 API Gateway로 변경

  2. LIve에서 Service registry - url 를 사용함 ==> serviceId 로 변경

About

Kubernetes Microservice SNS Project

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors