본문 바로가기

프로젝트40

배포 완료. 프로젝트 회고 해당 아키텍처가, 우리가 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. 멀티 쓰레드 환경 멀티 쓰레드란? 멀티 쓰레드란 무엇인지, 먼저 간단하게 정리하고 넘어가자.  실행 중인 프로그램의 단위를 프로세스, 프로세스의 작업 단위를 쓰레드라 함을 모두가 알고 있을 것이다.멀티 쓰레드 라는 것은, 하나의 프로세스 단위에서 여러가지의 쓰레드를 사용하는 것을 의미한다.  이와 같은 방식으로, 이미 메모리 공간을 할당받아 동작중인 프로그램에서 여러 작업을 처리하는 것을 의미한다. JAVA와 SPRING의 경우에서 JAVA에서는 기본적으로 , main이라는 한개의 쓰레드가 동작한다.데몬 쓰레드라는 것도 존재하는데, 이는 간단하게 '주 스레드의 작업을 돕는 보조적인 스레드' 를 의미한다.메인 쓰레드가 종료되면 같이 종료되는데, 이로 인해서 가비지 컬렉션 등 생명주기와 관련있는 작업을 하기 유리하다.메인보다.. 2024. 5. 3.
리팩토링 5. 속도 향상 목표 + 예외처리 현재 결제 로직은 다음과 같다.  어떤 서비스가 가장 오래 걸리는가  즉, 현재 결제 이후 결제 문제가 생겨 이를 취소하는 과정이 가장 큰 시간을,혹은 결제와 구매정보 변동까지 되어 이를 저장하는 과정이 두번째로 큰 시간을 사용함을 알 수 있었다. *의외로, MSA구조에 따른 MINISERVICE간의 통신엔 큰 시간이 소요되지 않았다. 로직의 속도 증가가 더 큰  로직을 더 좋게 만들어보자 1. 결제가 잘못되어 취소를 보내야 할때public Mono validateandSave ( PortOnePaymentRecords portOnePaymentRecords, String paymentId, int frontPaymentClaim, String usere.. 2024. 5. 2.
리팩토링 4 - WEBFLUX 이번 프로젝트에 참여하기 전에, 개인적으로 결제 시스템의 핵심은 비동기라고 판단했다.  하여 결제에 대한 부분을 비동기적인 형태로 완성했다.   하지만 리팩토링을 하면서 보니, 비동기적인 통신 형태에 대해 조금 더 명확하게정리하고 이를 비동기적으로 설계하면 어땠을까 라는 아쉬움이 있었다.  WEB FLUX VS MVC? 먼저, WEBFLUX와 MVC 패턴에 대한 예시를 보아야 한다.  이와 같이, WEB FLUX와 MVC는 아키택처부터 다르다. MVC는 MODEL -VIEW- CONTROLLER 아키택처를 따른다.이는 현재 가장 많이 상용화된 아키택처로써, 서브 시스템을 호출하고 해당 시스템에MODEL이라는 정보를 전달, VIEW는 그것을 표현하는 시스템이다.  하지만 WEBFLUX는, 아키택처부터 다른.. 2024. 4. 28.
리팩토링 3 - JPA 추상층 변경 JPA 현재 문제 이와 같이 , 기본적인 기능만 (따로 선언하지 않아도 되는) 사용하는 JPAREPOSITORY에 대한 리뷰를 받았다. 왜 이런 형태는 단점이 있을까? JPA의 구조: JPAREPOSITORY를 사용한다는 건, 영속성 컨텍스트를 이해 해야 한다. 영속성 컨텍스트 (PERSISTENCE CONTEXT): ENTITY를 영구 저장하는 환경 APPLICATION과 , DATABASE 사이에서 객체를 저장하는 가상의 DB가된다. (키:밸류 형태의 해시를 활용해, 조금 더 빠르게 사용하게 돕는다) FLUSH를 통해 실제 DB에 저장한다. ENTITY MANAGER: 이 영속성 컨텍스트를 관리한다. 엔티티를 저장하고 관리한다. 고민 JPAREPOSITORY를 활용한다는 건, 수많은 기능과 영속성 컨.. 2024. 4. 19.