inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

MSA와 사가 패턴을 찾아보면서 궁금했던 부분이 있어서 질문 남겨봅니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

모든 자료가 그런 것은 아니지만 많은 MSA 관련 자료가 EDA (Event-Driven Architecture)를 이야기하고 있고, 카프카를 도입하면서 느슨하게 연결되어있고 원하는 메시지만 수신할 수 있도록 하는 구조로 설명을 하는 것 같습니다. (메시지 큐를 도입했을 때의 문제점에 대한 이야기는 별로 없고, 그 이상의 무언가를 찾거나 노하우를 구하기 쉽지 않은 듯 하네요.) 디커플링 자체는 상당히 좋은 장점 중 하나이지만, 개별 시스템으로 분리되면서 트랜잭션 관련해서도 고민이 많이 필요하고 연결하는 고리가 많아지는 만큼 신경써야 할 부분도 많을 것으로 보입니다. 그래서 들었던 질문이 몇 가지 있는데 마땅히 답을 구할만한 곳이 없었는데 이 쪽에서 관련된 질문에 답을 해주실 것 같아 달아봅니다. 1. 이벤트 소싱에 대해 맞게 이해한 것인지 ? 우선 이벤트 소싱이 CQRS, 비동기 처리와 많이 엮여서 나오는 주제이긴 하지만 이벤트 소싱 자체만을 두고 봤을 때에는 1) 이벤트의 모든 이력을 남기고 2) 핸들러가 이를 처리하는 것이 전부 라고 이해해도 될까요 ? CQRS는 표면적으로는 변경과 질의를 분리하는 개념이지만, 이벤트 기록을 모두 재생해서 조회하는 것이 어려워서 질의와 변경을 분리하는 아이디어 때문에 이벤트 소싱에서 함께 언급되는 패턴으로 이해했고, 비동기 처리는 이벤트 소싱이 비동기 처리를 편하게 할 수 있는 환경 정도로만 이해했습니다. 제가 이해한게 맞는지 모르겠어서 잘 이해했는지 질문을 드리고 싶구요 ㅎㅎ 2. 짧은 시간 안에 처리되어야 하는 API도 MSA에 적합한가 ? 위에 제가 이해한 것이 맞다는 가정하에 말씀드리는 거긴 한데요. 예를 들면 만약에 OTT에서의 유료 영상 결제, 문서 파일 결제, 웹툰 등에서 결제하자마자 결과를 검증하고 사용해야 하는 과업이 있고, 이 과업을 단일 API로 처리하던 것을 MSA로 전환할 경우에 1) API, gRPC 등 네트워크 통신을 사용하는 MSA의 경우 : 코드나 개념적인 분리를 통해 서비스를 작게 쪼갤 수 있는 장점은 있지만 네트워크 이슈, 롤백 등 신경써야 할 문제가 많아진다 2) 카프카 등의 메시지 큐를 통한 MSA일 경우 : 카프카 자체의 문제 혹은 처리하는 개별 마이크로 서비스에 병목이 생기면 처리가 지연되며, 단일 API로 주고받던 경우에는 앱 수정이 불가피하다 (카프카를 사용하면 더더욱 이벤트 소싱을 고려할 수밖에 없고 PENDING 상태가 기존 앱에서 정의되지 않았기 때문에) 는 문제가 있을 것 같습니다. 아무래도 제가 카프카를 넣는 것이 우려가 되는 이유는 1) 각 서비스에서 발행한 카프카 메시지를 어떻게 추적하는지 쉽지 않다고 생각했고, 2) 장애 포인트가 쪼개지는 서비스와 개념적으로 발생하는 연결의 갯수에 비례해서 많아지기 때문이라 생각했고, 3) 또한 카프카를 통해서 처리하는 속도가 API로 처리하는 지금 속도 대비 느리게 세팅된 상태라 과하게 생각하는건가 싶기도 하고, 4) 앱에서 '서버의 아키텍쳐 변경을 위해 생긴 PENDING 상태에 대해 알고 있어야 하는가'에 대해서 고민이 많아서 그런 것 같습니다. 제가 MSA 관련해서는 경험이 없다보니 의견을 좀 들어보고 싶습니다. 3. 보상 트랜잭션과 관련하여 각자의 로컬 트랜잭션만 보장하고 문제가 생기면 그게 반하는 트랜잭션을 새로 발행해서 상태를 상쇄시키는 형식인 것 같습니다. 상태 머신이 명확하게 구분된다면 보상 트랜잭션 구현이 용이하겠지만, 그렇지 않을 경우나 모호한 경우가 있을 것이라 생각됩니다. 또한 보상 트랜잭션이 실패하는 경우 더더욱 현상 파악이 쉽지 않을 것 같기도 하고, 구현하는 서비스마다 제각각이라 노하우를 구하기 쉽지 않을 것으로 보여서 구현 난이도가 꽤 올라갈 것으로 보이는데, 이런 부분을 보완할 수 있는 방법이 있을지 궁금합니다.

  • Kafka
  • msa
  • JPA
  • architecture
  • spring-boot
  • spring-cloud
ello 댓글 1 좋아요 0 조회수 1238

안녕하세요! MSA에 대해서

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요! 궁금한게 있습니다. 저희회사에서는 프로젝트가 멀티모듈로 되어있습니다. 그리고 CMS(운영관리 모듈), API, COMMENT 모듈 이렇게 3개의 애플리케이션 모듈을 사내 도커레지스트리에 도커 이미지로 올리고 AWS에 각각 3개의 모듈을 띄우는데요! 이게 음.. 데이터베이스는 한개로 씁니다. 그러니까 각 3개의 데이터베이스가 따로 한개씩 있는 것이아닌 마스터 하나에 슬래이브 1개의 레플리카로 구성되어있습니다. 이것또한 MSA라고 할수있을까요? 신입이라 아직 정확하게는 모르겠지만 저는 DB도 각 애플리케이션 마다있어야한다고 보고 그게 MSA라고 생각하고 있거든요.! 선생님의 의견이 궁금합니다! 감사합니다.

  • spring-boot
  • JPA
  • architecture
  • spring-cloud
  • msa
  • Kafka
이얏 댓글 1 좋아요 1 조회수 381

test_module 내에서 경로 등록

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

안녕하세요 저도 import 파일을 발견하지 못한다는 ModuleNotFound 에러에 직면했었습니다. 그래서 test_module 파일 내에서 sys.path.append('경로') -> 이 명령어를 넣어줬더니 import가 문제없이 잘 되네요. 이렇게 해결해도 되는 건가 싶어 글 적었습니다ㅎㅎ

  • python
wndudrla1011 댓글 1 좋아요 0 조회수 299

영어 대소문자

미해결

입문자를 위한 파이썬 기초 따라잡기

다른거는 소문자로 시작해도 작동이 되던데 왜 True, False는 대문자로 시작해야 코드가 실행 되는 건가요? 변수가 아니라서 그런가요?

  • python
  • python
장인서 댓글 0 좋아요 0 조회수 250

비교적 최신 버전에서 에러가 발생합니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

에러 내용을 자세하게 이해하진 못했지만 사용중인 임베디드 톰캣 버전에서 `hasIpAddress` 를 찾지 못하는 것 같습니다. 스프링 버전은 2.6.2 사용중이고, starter-security 그대로 사용하고 있습니다. `hasIpAddress` 대신 다른 메서드를 사용하면 가능은 한데 의도한 것과 다른 것 같아서 남깁니다. java.lang.UnsupportedOperationException: public abstract java.lang.String javax.servlet.ServletRequest.getRemoteAddr() is not supported at org.springframework.security.web.FilterInvocation$UnsupportedOperationExceptionInvocationHandler.invoke(FilterInvocation.java:326) ~[spring-security-web-5.6.1.jar:5.6.1] at com.sun.proxy.$Proxy150.getRemoteAddr(Unknown Source) ~[na:na] at javax.servlet.ServletRequestWrapper.getRemoteAddr(ServletRequestWrapper.java:241) ~[tomcat-embed-core-9.0.56.jar:4.0.FR] at org.springframework.security.web.util.matcher.IpAddressMatcher.matches(IpAddressMatcher.java:65) ~[spring-security-web-5.6.1.jar:5.6.1]

  • msa
  • Kafka
  • spring-boot
  • architecture
  • spring-cloud
  • JPA
ello 댓글 11 좋아요 1 조회수 5632

명령 프롬프트

미해결

입문자를 위한 파이썬 기초 따라잡기

명령 프롬프트 cd Desk top 입력하니까 저장된 경로를 찾을 수 없다고 뜨는데 왜 그러는 건가요?

  • 명령프롬프트
  • python
  • idle
장인서 댓글 0 좋아요 0 조회수 224

Ground Truth로만 학습한다는 것에 대한 질문

해결됨

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

안녕하세요. 강의 4분 40초경부터 설명이 시작되는, Ground Truth로만 학습한다는 것이 잘 이해가 되지 않아 질문 올립니다. IOU를 구하기 위해서는 G.T값 이외의 비교 대상이 필요하다 생각하는데, class를 G.T로만 정한다는 것이 이해가 잘 안되네요.. 답변해주신다면 정말 감사하겠습니다!

  • 머신러닝 배워볼래요?
  • keras
  • python
  • 컴퓨터-비전
  • 딥러닝
  • tensorflow
alsdn2530 댓글 1 좋아요 0 조회수 292

서비스 디스커버리 관련 질문입니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. 수업 잘 듣고있습니다. 서비스 디스커버리 관련 질문인데요, 스프링 유레카를 클라우드에 올릴때, 1개의 서버(팟)에만 올려야 하는지요? 여러개의 팟에 올려서 등록된 인스턴스가 공유가 가능한건가요? 서버1개에서만 유레카가 돌면 서비스디스커버리 자체의 트래픽이 높아져, 혹은 커넥션이 꽉차 장애가 나는경우가 있지 않을까 해서요. 감사합니다.

  • spring-cloud
  • architecture
  • spring-boot
  • JPA
  • msa
  • Kafka
hjlee 댓글 1 좋아요 0 조회수 612

java.lang.NoClassDefFoundError: Could not initialize class javax.xml.bind.DatatypeConverterImpl 에러 대처법

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. private boolean isJwtValid (String jwt) { boolean returnValue = true; String subject = null; try { subject = Jwts. parser ().setSigningKey( env .getProperty( "token.secret" )) .parseClaimsJws(jwt).getBody() .getSubject() ; } catch (Exception ex){ returnValue = false; } if (subject== null || subject.isEmpty()){ returnValue = false; } return returnValue ; } 이부분에서 디버깅을 따라가던중 getBody() 메서드에서 오류가 발생하는것을 발견 하였습니다. java.lang.NoClassDefFoundError: Could not initialize class javax.xml.bind.DatatypeConverterImpl 이러한 오류가 발생하였을때 pom.xml에 <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.1</version> </dependency> 해당 종속성을 추가해주게 되면 해결됩니다. 혹시 저같은 오류가 발생하신 분들에게 도움이 되었으면 좋겠습니다~! 음 뒷강의에서.... 바로 추가해주시는군요 ...ㅎㄷㄷ....

  • architecture
  • spring-boot
  • JPA
  • spring-cloud
  • msa
  • Kafka
junho86 댓글 6 좋아요 13 조회수 3637

설정 정보가 다른 CircuitBreaker 사용하는 방법

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. 강의 잘 듣고 있습니다. 예제에서 Resilience4jConfig를 통해 CircuitBreaker에 대한 설정을 하여 사용하는 것으로 확인을 했습니다. MSA를 연동하는 서비스에 따라 CircuitBreaker에 대한 설정 값을 다르게하여 복수개를 사용하는 경우도 있을 것 같은데, 이럴 경우 Resilience4JConfig에 대한 Bean 등록과 Config 를 어떻게 잡으면 될까요? 감사합니다.

  • Kafka
  • msa
  • spring-boot
  • architecture
  • JPA
  • spring-cloud
slr과르 댓글 1 좋아요 1 조회수 575

반복문 피보나치 수열 질문

미해결

파이썬(Python) 기초부터 실무까지 part.1

안녕하세요 수업을 듣고 있는 수강생입니다. 다름이 아니라, 피보나치 수열에서 해당 코드는 입력받은 수까지 계속 연산을 하고 있으며, 단순히 프린트 하는 명령이 없기 때문에 프린트를 하지 않는것으로 보이는데, 해당 입력 값이 13일 때, for문 자체를 빠져나가게 하는 방법이 있을까요? else : final_fibo = n1 + n2 n1 = n2 n2 = final_fibo if final_fibo < insertNumber: print (final_fibo , " " )

  • python
댓글 2 좋아요 0 조회수 461

자료형 제어문이 나오지 않습니다.

미해결

Jupyter Notebook으로 시작하는 Python

주피터 노트북 실행까지는 되었으나 자료형 제어문등이 나오지 않습니다.

  • python
Jung Jin-woong 댓글 2 좋아요 0 조회수 328

/와 //

미해결

입문자를 위한 파이썬 기초 따라잡기

/ 와//둘 다 나누기로 몫이 나오나요? 코드 실행했을때 값이 다르게 나와서요

  • python
  • python
장인서 댓글 0 좋아요 0 조회수 391

에디터 모드 calc

미해결

입문자를 위한 파이썬 기초 따라잡기

에디터 모드에 작성한 calc가 실행된게 왜 쉘모드에서 보여지는 건가요?

  • python
  • python
  • idle
장인서 댓글 0 좋아요 0 조회수 312

html에서 id 속성에 대해 간단한 질문..

해결됨

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

어느 사이트에서든 어떤 태그 내의 id 속성값은 유일무이하게 해당 태그에서만 사용된다고 봐도 정말로 문제없나요? 이전에 html 실습하면서 공부했을 때 id속성이나 class속성이나 두개 사용하면서 크게 다른게 없다고 느꼈는데 이 영상을 보면서 id가 실무에서는 해당 태그에만 적용되도록 사용하는건지 정확히 알고싶습니다.

  • 웹-크롤링
  • python
이시웅 댓글 1 좋아요 1 조회수 247

큰따옴표 질문입니다.

미해결

[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]

강의 13:23 import pymysql db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='funcoding', db='ecommerce', charset='utf8') cursor = db.cursor() for index in range(10): product_code = 215673140 + index + 1 sql = """INSERT INTO product VALUES( '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """ print (sql) cursor.execute(sql) db.commit() db.close() -------------------------------------- 13:23 에서 '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """ '""" + str(product_code) + """' 이부분에서 str로 이미 문자열이 되었는데 큰따움표 쓰는거랑 작은따움표를 왜 추가하신건지 궁금합니다. 그냥 'str(product_code)' 로 쓰면 안되나요?

  • 데이터 엔지니어링
  • sql
  • mysql
  • DBMS/RDBMS
  • python
댓글 1 좋아요 0 조회수 433

Django 로 이용한 머신러닝/딥러닝 서비스

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요 강사님 퀄리티 높은 강의와 디테일좋은 강의 감사드립니다. 머신러닝에도 관심이 있어 공부를 하던와중에 내가직접 서비스를 하려면 백엔드의 지식도 필요할듯하여 감사하게 강의를 듣고있습니다. 머신러닝/딥러닝 서비스를 사용하기위한 백엔드 서비스가 Django 가 좋은것같은데 현업에서도 많은 사용을 하고있나요? (아마 강사님께서도 많은 컨설팅을 해주셔서 아실거라 생각이 들어 질문을 드립니다.) 딥러닝 모델을 웹에서 돌리기위해서는 병렬처리?가 필요할듯한데 Django 에서는 이러한 부분에대한 솔루션이 있는지 또한 궁금합니다. 감사합니다.

  • django
  • react
  • python
  • docker
YoonEo Choi 댓글 2 좋아요 0 조회수 3721

함수형 프로그래밍

해결됨

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 하시다가 ' 함수형 프로그래밍' 에 대해서 말씀하셨는데, 이 키워드로 검색하니 많은 강좌가 나와서 올바른 결과인지 무엇보다 잘 모르겠습니다. 하나 추천해주시면 감사하겠습니다. 현 상황은 취업준비생으로, Inflearn Original 로 파이썬 초급부터 시작하여 마지막 단계까지 공부할 계획이라 초급부터 듣고 있습니다. 또한 기계공학 전공자라 CS 지식이 부족하여 정보처리기사 필기 준비와 병행하고 있습니다. (앞으로 python backend를 준비하면서 MLOps 쪽으로 커리어를 진행할까 생각 중입니다.)

  • 함수형프로그래밍
  • python
김제하 댓글 1 좋아요 0 조회수 218

which pyhon이 왜 안될까요..?

미해결

타입 파이썬! 올바른 class 사용법과 객체지향 프로그래밍

which python을 입력하면 which : 'which' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + which python + ~~~~~ + CategoryInfo : ObjectNotFound: (which:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 라는 오류가 발생합니다. 어떻게 해야되나요

  • python_error
  • python
  • oop
rdh23294 댓글 1 좋아요 1 조회수 456

Python Selenium code 관련 질문드려요

미해결

from selenium import webdriver driver = webdriver.Chrome('C:/Users/estee/Desktop/파이썬 작업물/chromedriver.exe') import time # 주소모음 naver_GIBH = "https://map.naver.com/v5/search/%EA%B5%AC%EC%8A%A4%EC%95%84%EC%9D%BC%EB%9E%9C%EB%93%9C%20%EB%B8%8C%EB%A3%A8%ED%95%98%EC%9A%B0%EC%8A%A4/place/505375149?c=14140682.3022615,4508106.9534795,15,0,0,0,dh" naver_GBK = "https://map.naver.com/v5/entry/place/996095686?c=14133872.9335375,4519631.0127127,15,0,0,0,dh" naver_YONGSAN = "https://map.naver.com/v5/entry/place/1905880476?c=14133837.3558283,4513226.0701902,15,0,0,0,dh" naver_adresses = [naver_GIBH, naver_GBK, naver_YONGSAN] # 평점과 리뷰 크롤링 for adress in naver_adresses : driver.get(adress) driver.implicitly_wait(10) driver.switch_to.frame('entryIframe') rating = driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[1]/div/div/div[1]/div/span[1]').text submenu_name = driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[3]/span').text # 메뉴가 5개 나올 때는, 4번째 탭을 이용하고, 메뉴가 4개 나올 때는 3번째 탭을 이용 if submenu_name != "리뷰" : driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[4]/span').click() else : driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[3]/span').click() # 리뷰개수 print( driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[5]/div[4]/div[3]/h2/span').text ) driver.close() 해당 코드는 네이버 지도의 각 매장 별 리뷰 개수를 가지고 오는 코드에요. naver_GIBH , naver_GBK 링크는 리뷰 개수를 불러오는데, 마지막 naver_YONGSAN 링크의 리뷰 개수는 들고오지 못하더라구요. 혹시 이 코드에 관해 봐주실 수 있을까요 ? + 추가 질문인데, 제가 Selenium을 통해서 리뷰개수를 찾아오는 방식은 selenium으로 리뷰 탭을 선택하고 나서, 들고 오는 거에요. 근데 네이버 지도가 인스타그램처럼 스크롤을 내리면 정보를 불러오는 방식으로 설계되어 있더라구요. 혹시 이와 관련해서 Selenium으로 클릭하지 않고, crawling 하는 방법이 따로 있을지도 질문드려요 .

  • python
  • selenium
조용한 도미 댓글 0 좋아요 0 조회수 232

인기 태그

인프런 TOP Writers

주간 인기글