Programming 91

(JAVA) Multi-Thread를 활용하여 메인페이지를 빠르게 불러오기

Mobile APP에서는 메인화면에서 워낙 많은 모듈을 호출하다보니 multi thread를 사용하여 병렬로 데이터 처리를 하는 방식이 나름 보편화 되어 있는것 같다. https://www.youtube.com/watch?v=IVt7HjUM0LQ&t=388s 최근 어느 사이트에서 Web 메인페이지가 느리다는 보고가 있었고, 그 이유는 메인페이지에서 특정 기관의 API에서 데이터를 받아오는데 시간이 소요되어서 느리다는 이유였다. 나는 위 Youtube의 멀티스레드 방식이 해결책이 되지 않을까 하여 자체적으로 테스트를 해보았다. 아래는 Controller에서 View에 특정 데이터를 던지는 것인데 @RequestMapping("/") public String index(Model model) { int te..

Programming/Java 2022.06.30

Graph QL이란

이제 API서버가 단순히 데이터 호출이라면 GraphQL로 대체될거 같다.. 어째 점점 개발이라는게 컨피규레이션으로 다 만들수있게 변해가는거 같음.. GraphQL이란 API개발의 프레임워크인데, 서버/클라이언트의 Endpoint 언어와 무관하게 개발할 수 있다. 서술적이며 자체 문서화 방식의 프레임워크라고 보면된다. 그리고 Endpoint의 통신을 해소해줄 뿐만아니라 SQL에 대한 비종속적인 쿼리까지 가능하다...(JPA는 Java라도 Dependency가 있는데...) EndPoint Gateway를 언어로 개발하는게아니라 GraphQL 모듈설정만 하면 된다. 쿼리/뮤테이션(query/mutation) 이란 건 그냥 용어만 굳이 나눈것. 프로그래밍 상에서는 두드러진 차이가 없다. 쿼리는 R 뮤테이션은..

Programming/기타 2022.06.22

(기사스크랩) 개발자가 알아야 할 클라우드 프로그래밍 언어 11가지

출처 : https://www.kcloudnews.co.kr/news/articleView.html?idxno=11018 개발자가 알아야 할 클라우드 프로그래밍 언어 11가지 - 한국클라우드신문 [한국클라우드신문=이수현 기자] 클라우드 컴퓨팅 프로그래밍은 다양한 형태를 취한다. 백엔드 개발자에게 이는 클라우드 네이티브 앱의 개발 또는 상호 연결된 마이크로서비스 세트의 지속적 www.kcloudnews.co.kr [한국클라우드신문=이수현 기자] 클라우드 컴퓨팅 프로그래밍은 다양한 형태를 취한다. 백엔드 개발자에게 이는 클라우드 네이티브 앱의 개발 또는 상호 연결된 마이크로서비스 세트의 지속적 제공을 뜻할 수 있다. 관리자에게는 클라우드 기반 리소스를 자동으로 프로비저닝하는 스크립트 개발을 의미할 수 있다...

Programming/기타 2022.06.16

React+TypeScript 개발환경 세팅 및 Startup

패키지 매니저 NPM 사용 시 ※ 일반적인 React 프로젝트 시작 시 https://developer.mozilla.org/ko/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started React 시작하기 - Web 개발 학습하기 | MDN 이 문서에서는 React를 소개합니다. 우리는 React에 대한 약간의 배경지식과 사용 예시, 로컬 컴퓨터에 React 툴체인을 설정하는 방법을 배우고 프로세스에서의 React 동작 원리를 배우기 위해서 간단 developer.mozilla.org npx create-react-app demo-jpkim --template=typescript npm install -S s..

MSA에 대한 기본개념 - 5. 회복성

회복성을 결정하는데 있어서 다음의 요소가 있다. (회복성에 대한 이슈는 동기호출에서 많이 발생한다.) 그리고 구현기술/패턴은 다음과 같다. 1. 로드벨런싱(부하분산) → 일반적인 로드벨런서, Gateway, Ribbon 등 2. 회로차단기| 3. 폴백 4. 벌크헤드 → 서킷 브레이커 동기호출로 서비스를 구현하게 되었을 경우 특정 서비스의 트랜잭션이 지연되어 동기된 다른 서비스에도 지연현상이 전파될 수 있음. 이를 차단하기 위해 서킷브레이커 패턴을 적용 장애감지 시 차단기 작동 ▶ 일시적으로 Failback으로 서비스 대체 ▶ 일부 트래픽으로 서비스 정상여부 확인 ▶ 정상확인 시 차단기 해제

Programming/MSA 2022.06.12

MSA에 대한 기본개념 - 4. 서비스를 나눈뒤 상호참조, 통합

MSA 서비스를 분리한 후에는 어떻게 통합(상호연동, 객체참조)할 것인가? → API Gateway 역할 서비스 라우팅 CORS(교차출처) 허용 ACL 적용하여 잘못된 호출 필터링 기타 보안정책 적용(ex. Prevent DDOS) 로드벨런싱 관련도구 Proxy, Kube Gateway Service, [Zuul, Ribbon] → Service Registry+Service Discovery 역할 서비스 Discovery가 가능하도록 서비스 경로 저장 관련도구 Eureka, Kube DNS Service, 일반DNS서비스, Feign Client → URI Path-based Call (Req-Res) 역할 동기호출 관련도구 REST API → Message Queue Call (Pub-Sub) 역할 ..

Programming/MSA 2022.06.12

MSA에 대한 기본개념 - 3. Domain Driven Design 으로 가는 여정

어플리케이션 도메인의 변화 회사가 성장함에 따라 어플리케이션의 Core(중요한것)와 Supporting(덜 중요한것)으로 나누게 된다. 예시) Core - 사용자들은 주문하기 위해 많은 상품을 클릭하고 "구매" 버튼을 클릭 - 상품이 주문되면 배송팀은 상품의 배송을 준비 - 주문이 취소되거나 완료되면 상품재고 수치 감소 Supporting - 고객들은 매진된 상품을 구매할 수 있으며 이는 입고뒤 해소 - 배송 상태 변화시마다 Notification이 고객에게 전달 - 주문과 취소를 반복하는 고객은 블랙리스트로 관리 - 마케팅 팀은 매일 오전 9시에 추천상품을 메일링 회사가 더 규모가 성장하면 팀은 자치성과 동기부여를 위해 더 나뉘어 지게 된다. 예시) 배송관리팀 - 상품이 주문되면 배송팀은 상품의 배송을..

Programming/MSA 2022.06.10

MSA에 대한 기본개념 - 2. 동기 비동기 호출

Micro Service Architecture 설계의 발전 1. Rest API 방식의 설계 (동기호출) - Code Coupling 해소. 그러나 Time Coupling 잔존 - 서비스 Blocking 가능성 내제 - 장애전파 우려 - Point to Point 연결에 따른 복잡한 스파게티 네트워크 Request-Response 모델의 데이타 보호 장애전파를 방지하기 위해 필요한것이 서킷브레이커 패턴. 하나의 트랜젝션이 가능한 블로킹이 발생하지 않도록 미리 차단 → Fail-Fast 전략 메모리 사용 폭주 막음 장애 감지시 차단기 작동 ▶ 일시 동안 Failback으로 서비스 대체 ▶ 일부 트래픽으로 서비스 정상여부 확인 ▶ 정상 확인 시 차단기 해제 Rest방식 MSA 에서도 모놀리식의 2단계 커..

Programming/MSA 2022.06.09

MSA에 대한 기본개념 - 1. Legacy에서 MSA로 진화하는 여정

AS-IS시스템의 Pain-Points는 다음의 것들이 있었다. 서비스 업그레이드가 수시로 요청이 들어와 거의 매일 야근 테넌트별 다형성 지원을 제대로 하지 못하여 가입 고객이 늘 때마다 전체 관리 비용이 급수로 올라가는 한계에 봉착 운영팀과 개발팀이 분리되어 개발팀의 반영을 운영팀이 거부하는 사례 발생 개발팀은 새로운 요건을 개발 했으나 반영하면서 발생하는 오류가 두려워 배포를 꺼려함 현재 미국, 일본, 유럽 등 수요가 늘어나는 상황이나 상기한 문제로 신규 고객의 요구사항을 받아들이지 못하는 상황 수동 운영의 문제로 SLA 준수가 되지 못하여 고객 클레임이 높은 편 기존 모놀리식 아키텍처의 한계로 장기적인 발전의 한계에 봉착 모놀리식의 장점 상호 데이터 참조가 용이하여 개발 리소스를 최소화 시킬 수 있..

Programming/MSA 2022.06.08