본문 바로가기

프로젝트/장애인 PT 플랫폼, PTFD20

배포 완료. 프로젝트 회고 해당 아키텍처가, 우리가 NCP를 통해 구축한 최종 플랫폼이다. 이와 같은 형태로(UI 개선 이전 본이지만, 전체적인 구조 정도는 파악할 수 있다.) 기능 리스트업은 간략하게, 다음과 같다. 1. 회원가입,로그인2. OAUTH2 로그인,회원가입3. 상품 조회 4. 상품 작성, 수정, 삭제5. PG사를 활용한 결제 진행6. 채팅 (추가 예정)7. 장애인이 활용가능한 체육 시설 전달 그 과정에서, 다양한 시스템적인 고민을 했다.     1. DELETE 노출을 최소화 하기 위해 노력했다. - 매 자정 마다 DELETE, 스케줄러를 활용해 데이터 수 확인 후 제거 2. MSA 구조 상의 예외 처리 - APPLICATION 영역에서 통신하는 형태로 구현 - MSA로 결제를 구축하는 과정에서, 시스템간 통신하는 .. 2024. 7. 31.
NCP CI CD 구축(IN K8S CLUSTER) 결과로컬에서 PUSH2.자동 이미지 빌드 3. 자동 배포 배포 전략 → ROLLING (모두가 MSA 이므로, 추가 자원 소비 방지)ROLLING은 싹다. BLUE GREEN은 버전 1,2 , 카나리는 조금      4. 배포 완료주의 할 점: 포트 번호 변경은 CI/CD로 불가. → K8S 보안 정책 (이미지 변경은 가능)  느낀 점:정말 CLOUD 생태계의 경쟁은 치열하구나NCP의 CI/CD 구축은, 정말 너무나도 편리하였음.이 정도 기술력이라면. . 국내 클라우드 생태계는 바뀔 수도 있겠다는 생각을 했음언제든지 바뀔 수 있는 것이, 시장의 지배자라는 생각을 했으며, 이에 따라 적재 적소에 맞는 활용 능력이 필요함을 깨달음.K8S 구축 과정에서는 SPRING CLOUD를 분리하는 과정에서 고난이 있었.. 2024. 7. 14.
API GATEWAY -NCP 보호되어 있는 글 입니다. 2024. 7. 10.
CI/CD 보호되어 있는 글 입니다. 2024. 7. 8.
NCP + K8S의 DB를 LOCAL에서 사용하기 현재 NCP를 활용해, 서비스를 배포하는 것을 목표로 하고 있다.허나 이번 공모전에서는 전용 DB를 확보받진 못하였기 때문에, 해당 DB를 LOCAL에서 사용하는 방법을 적어두려 한다.  1. POD + SERVICE 올리기 2. 이제, 해당 SERVICE의 PORT로 연결될 수 있게 해주어야 한다.  포트 포워딩! 3. SPRING의 URL - DATASOURCE 또한 변경하자.  간단하게 연동 완료!  *깨달은 점CLOUD를 활용할 수 있는 무궁 무진한 방법을 깨달았다. 또한 개발을 하다보면, 원하는 스택을 사용하지 못하는 경우가 점점 생길텐데, 그때도 단순하게 포기하지 말고 방안을 찾다보면 해낼 수 있다는 것을 깨달았다. 그 중 하나가, 서버를 구하기 위해 참여했던 이번 K-PAAS 공모전 이기도 .. 2024. 7. 6.
NCP로 GCP 활용 부 변경 * 사용자의 프로필 등을 저장하는데 사용하는 기능 0. 왜 사용했는가?우리는 사용자의 프로필, 올린 사진 등을 이미지로써 저장하게 될 것이다.그 방안으로 최초에 DB에 직접 사진을 바이트 변환하여 저장하는 방식을 택했었다.허나, 너무나 길어진 값 때문에 프론트와의 통신에서도 문제가 발생,조회 시의 성능이 크게 감소하는 등의 문제가 있었다.그러므로 이미지를 BUCKET에 저장→ 해당 URL을 DB에 저장하는 형태의 구축을 진행했다. 설정 변경 2. NCP 활용 SERVICE 부 구현 private AmazonS3Client amazonS3Client;@PostConstructprivate void init() { BasicAWSCredentials basicAWSCredentials = new Bas.. 2024. 7. 4.
1차 완성, 코드 리뷰 1차적으로 프로젝트가 완성 되었다. https://github.com/stophyeon/Darakbang.git GitHub - stophyeon/Darakbang: 오픈 마켓 서비스 오픈 마켓 서비스. Contribute to stophyeon/Darakbang development by creating an account on GitHub. github.com 우리가 원하던 대로 , Spring Cloud, API GATEWAY 등을 활용하여 MSA 구조의 마켓의 구축을 성공했다. 해당 구축 이후엔 코드 리뷰를 진행했다. 사실 코드 리뷰라는 기회 자체가 정말 얻기 쉽지 않은 기회이지만, 다행히도 팀장역할을 하신 분의 지식이 깊어 코드 리뷰를 받을 수 있었다. 코드 리뷰 내용 1. 가독성이 너무 떨어진.. 2024. 4. 16.
Spring Security (MSA)를 하며 만난 문제들 현재 우리 프로젝트 구조는 ApiGateway -> Eureka확인 -> 후 해당 service들에게 요청을 보내는 형식이다. 즉, ApiGateway에서 jwtfilter를 통한 인증,인가를 하고 있다. 프로젝트 과정에서 MSA 구조로 프로젝트를 올려야 했고, 이 과정에서 인증 문제가 발생해 계속 401 UNAUHTORIZED가 발생했다. 이를 해결해보자 . JWTFILTER만 있는것이 아니다. JWTFILTERCHAIN 뿐만 아니라, CORS, 기본 SecurityFilter등이 존재한다. @Configuration @EnableWebSecurity public class SecurityConfig { private final JwtProvider jwtProvider; private final Me.. 2024. 4. 8.
RESTFUL URL 규칙 + 협업시 지켜야 할 것들 프로젝트를 진행하며, 혼자 개발 했던 경험과는 큰 차이가 있음을 배우고 있다. 그 과정에서 배웠던, URL 규칙을 정리하고자 한다 . URL 규칙 1. 소문자를 사용하자. 대문자는 가끔 문제가 발생되기도 한다. 2. 마지막이 /로 끝내지 않게 하자 3. 동사를 지양하자. 동사를 사용하면 사용자가 지금 어떤 행위를 하고있는지 직접 확인이 가능하다. 지양하고 GET, POST, PUT , PATCH등을 활용하여 해당 내용을 전달하자 4. BACKEND에 관련된 내용인데, REQUESTPARAM과 PATHVARIABLE의 활용엔 고민하자. 사실 둘다 URL의 전달이 목적이 되면, 어떤것을 사용해도 기능상 문제가 되는 경우는 많지 않다 (하지만, PATHVARIABLE은 하나만 가능하다는 단점도 있기는 하다. .. 2024. 4. 6.
@builder/ 모든 생성자 정보처리기사를 공부하며 , 빌더 패턴이라는 패턴을 확인하였다. 실제로 프로젝트를 위한 협업을 진행하며 @builder라는 어노테이션을 확인하였고, 어떨때 생성자 대신 해당 @builder를 사용하는지, 그 이유는 무엇인지 정리하기로 하였다. @builder의 장점 @Table(name = "product") @Entity @Getter @RequiredArgsConstructor @AllArgsConstructor public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_id") private Long productId ; @Column(name = "product_name") .. 2024. 4. 3.