AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
Ex1) User -> Message Queue -> OrderService (그림에서도 드레이크가 고개를 가로 젓고 있는데..) 이점이 별로 없어보입니다 불필요한 Network Hop이 생기는거같아요 Ex2) Google Server -> Queue -> <- Results Store 이 그림에서도 검색결과를 집계하는 프로세스를 분리하여 리소스를 효율적으로 사용한다는것 외엔 오히려 응답속도를 저하시킬거같아요..
안녕하세요 🙂 5-4- 예제. 애플리케이션 객체 추가하기 강의내용 관련 질문이 있습니다. (DAO) 관련 예제 소스( https://github.com/eternity-oop/object-basic-05-04 ) 내에 보면 service 패키지에는 xxxDAO 인터페이스가 존재하고 persistence 패키지 내에는 xxxDAO 의 구현체 (xxxJbcDAO 클래스)들이 존재하는것을 확인하였는데요 이렇게 service 패키지 및 persistence 패키지 로 분리한것이 의존성을 제거하기 위함이라는 내용을 다른 질문내용으로 확인하였습니다 ( https://www.inflearn.com/community/questions/1355997 ) 관련하여 이렇게 분리함으로써 service 패키지 내의 서비스 클래스는 DAO 의 역할만 확인하도록 하고 이에 대한 내부 구현은 신경안쓰겠다 라는것으로 이해하면 될까요 ? (역할 책임 분리)
안녕하세요. 좋은 강의 만들어주셔서 감사합니다. 강의를 보다가 마침 평소에 고민하던 내용이 있어서 질문 드리게 됐습니다. 5-4. 애플리케이션 객체 추가하기 강의를 보던 중 외부에서 직접적으로 각각의 도메인을 호출하지 않고 ReservationService를 만들고 외부에서는 reserveScreening()를 호출해서 예약을 하는거로 이해했습니다. reserveScreening()에서 customer 조회, screening 조회, 예약 등록 등의 작업을 하고 있는데 이 경우에 SRP를 위반하는게 아닌가 하는 의문이 있었습니다. 헷갈리는 부분은 함수 하나에 여러 가지 동작이 있고 변경 될 여지가 많으니까 SRP에 위반 되는게 아닌가? 싶다가도 ‘예약을 하는 하나의 역할’이니까 SRP를 위반하는게 아니지 않나? 라는 생각으로 머리속에서 빙글빙글 돌고 있습니다. 평소 개발을 할 때 Service layer의 역할에 대해서 애매한 부분이 많았는데 SRP를 준수하려고 하나의 기능만 넣어야 된다고 생각하면서 개발을 하다보면 Controller의 역할이 많아지고 Service는 깔끔해졌지만 막상 보면 Service에서 하나의 기능을 구현한다기보다는 각각의 Service의 함수를 Controller에서 조합 해야 사용할 수 있고 비즈니스 로직을 Controller에서 파악할 수 있는 등의 문제가 있었습니다. reserveScreening()의 역할처럼 어떤 범위까지가 Service 하나하나의 기능으로 정의하는게 맞는지 궁금합니다. 또 다른 고민은 Respository에서 데이터를 조회할 때 Controller에서 Repository를 바로 조회하지 않도록 항상 Controller->Service->Repository의 순서로 호출을 하려고 하다보니까 간단하게 id로 데이터를 조회할 때에도 Service에 함수를 생성하고 함수 내부에는 Repository를 호출해서 그대로 return 하는 정도의 함수를 생성하게 되는데 이런 역할도 Service에서 가지고 가는게 맞는지 궁금합니다. 조금 추상적인 질문이 될 수도 있을 것 같은데 영호님이 생각하시는 Service layer의 역할에 대해서도 조금 알려주시면 좋을 것 같습니다. 다시한번 좋은 강의 만들어주셔서 감사하고 다음 강의 기다리고 있겠습니다. 감사합니다!
안녕하세요. 우선 저는 제 자신이 자바로 개발을 진행하고 있지만, 객체지향을 완전히 알고있는지에 대해 의문을 가진채 해당 강의를 접하게 되었고, 많은 생각과 깨달음을 얻고 있습니다. 감사합니다. 그리고 궁금한것이 있어 글을 쓰게 되었습니다. (사실 완강을 하지 않은 상태이긴합니다 ㅠ) 개발 설계 방식이야 다양할것이라 생각이 드는데, 보통 스프링 기준으로..프레임워크 내에서 패키지 설계를 진행할때 단순 관리 기능 개발 기준으로 보면, 레이어드 아키텍처와 유사한 방식으로 설계를 많이 진행하지 않을까라는 생각이 조심스럽게 듭니다. (물론 아닐수도 있습니다 ㅠㅠ) 그리고 보통은 절차지향으로 생각하여 ERD 설계후 이를 스프링 프로젝트 내에 레이어드 아키텍처를 설계하여 (대충 controller-service-repository(JPA 사용시)) 작업을 진행할것이라 생각이 듭니다. 그리고 service 에는 필요한 repository 들을 왕창 주입받는 형태로 설계될것이라 생각이 듭니다. 저는 여기서 궁금한것이 이러한 상황(레이어드 아키텍처)에서 강의의 오브젝트 개념을 녹이고 싶다면 패키지 구조를 어떻게 정의하는것이 마땅할지 문득 궁금해졌습니다. 예를들면 entity 패키지와는 별개의 다른 domain 패키지(책임을 일부 갖는 역할)를 만들어 service 패키지에서 해당 domain 패키지(책임을 일부 갖는 역할)를 주입받아 사용하는 방식으로 설계를 해야하는지 등이 궁금합니다. 질문을 작성하면서도 정답이 없으려나 싶기도 합니다. 무튼 감사합니다. 완강하겠습니다!!
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
안녕하세요~ 섹션 2 General Service 서비스 컴포넌트 의 마지막 부분에 질문이 있습니다. 이번 강의 마지막 부분에서 설명해주신 내용과 그림에는 게이트웨이가 모놀리스 서비스에만 적용이 가능하고 마이크로서비스에는 로드밸런서를 사용해야 하는 걸로 나와있는데요~ 보통 MSA에는 게이트웨이로 설명하고, 동일한 서비스들에 트래픽을 분산시키거나 장애 조치를 할 때 로드밸런서를 둔다고 하지 않나요? 혹시나 제가 잘못 알고 있는 부분을 짚어 주셨으면 해서 질문 드립니다! 그리고 이전 강의에서 LB와 게이트웨이를 다르게 설명해주신 부분도 굳이 분리할 수도 있지만... 보통 게이트웨이에는 로드 밸런싱 기능이 포함되는 것으로 보는 것 같던데 이 부분도 궁금합니다!
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
안녕하세요 3.1 영화 DVD 대여 시스템 데이터베이스 스키마 설계 에 대해 질문이 있는데요. rentals table 에 items_id 가 컬럼으로 추가되어 있습니다. 그런데 생각에 items table 레코드 보다 실제 하는 객체인 inventory table id 가 들어가야 할 것 같아서요. 어떤 차이점이 있는지 설명을 부탁드립니다.
N = int(input()) words = [ input() for _ in range(N) ] ans = 0 for word in words: prev = word[0] before = [] isGroup = True for i in range(len(word)): if word[i] != prev: before.append(prev) if word[i] in before: isGroup = False break if isGroup: print(word) ans += 1 print(ans 이게 수업으로 제공하셨던 정답 코드인데, 오답 코드가 아닌가 해서 여쭤봅니다. prev 변수가 갱신이 되지않고 계속해서 그룹여부를 체크하는데, 이 부분이 잘못 된 것이 아닌가 싶습니다. 예를 들어 abcb라는 문자열의 경우에서도 그룹단어가 아니어야하는데 그룹단어로 검출되는 로직인 것 같습니다. 제가 그룹단어에 대해 잘못 이해한 걸까요?
AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인, 알고리즘 사고, 오픈소스 실무 완성
안녕하세요! 강의를 듣다 메시지 큐 예제 2번 그림에서 질문이 생겨 글을 남깁니다! piano cat 검색 요청을 google server(생산자)가 메세지 큐를 이용해서 results store(소비자)로 넘기고 results store(소비자)에서 처리된 요청 결과를 다시 google server(생산자)로 어떻게 넘겨 유저 요청의 응답 결과로 반환할 수 있는지 궁금합니다.. 그림에서 results store -> google server 이 부분 화살표가 어떻게 그어질 수 있는지 궁금합니다!!
안녕하세요 강사님 2-4-예제. 절차에서 객체로 강의를 수강하고 있습니다. 해당 내용이 강의를 수강하는데 불편함은 없지만 제보 드립니다. 강의시간 7:01에 isSatisfiedBy() 함수에 새로운 조건문 추가시 if () { } else if() { } if() { //if로 코드가 추가 되어 있습니다. } https://github.com/eternity-oop/object-basic-02-04/blob/main/src/main/java/org/eternity/reservation/domain/DiscountCondition.java 샘플 코드도 확인해 보았는데 if로 된 부분을 확인 하였습니다. 감사합니다.
강사님, 36 서비스를 사용해서 소프트웨어 업데이트 패키지를 전달할때, Block Sequence Counter 가 포함되는데요. Block Sequence Counter 의 범위가 00~FF 밖에 되지 않습니다. 만약 Block 갯수가 255개를 넘어가는 경우에는 다시 00부터 시작하는것이 표준 동작인지요?