묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
클린한 아키텍쳐에 관하여
안녕하세요.API 서버 구현 - 1 의 내용에 대해서 질문 드립니다. package com.library.service; import com.library.controller.response.PageResult; import com.library.controller.response.SearchResponse; import문을 보면 BookQueryService 와 BookRepository 가 controller 패키지의 DTO들을 의존하고 있습니다. 3-tier architecture 에서는 한 방향으로 의존 관계가 흘러야 한다고 알고 있는데, 아키텍쳐 부분에 대해서 의견을 듣고 싶습니다. 감사합니다.
-
미해결
MSA, DDD 패턴으로 구현할때 고민사항
안녕하세요2일동안 강의 달리면서 실습도 하면서 궁금증을 해소하기위해 달려온 잡부개발자입니다최근 일반 레이어드 아키텍처로만 개발을 진행하니 생긴 문제들(테스트진행이 어려워짐, 소스파악하기 어려워짐 등등)이 생겨서 다른 아키텍처가 있나...찾아보다가 헥사고날 아키텍처가 가장 괜찮았다고 생각했고 DDD 형태로 진행하는게 깔끔할꺼같아서 혼자서 구조를 만들어보았어요아래 설명을 이어붙히도록하겠습니다adapterㄴ 헥사고날중 가장 바깥에 존재하는 controller, dao 부분adapter-modelㄴ adapter 에 쓰이는 모델들을 application 모듈과 연동시키기 위해 만든 model 클래스 모듈 applicationㄴ 각각의 UseCase 구현체와 인터펭이스가 존재하며 adapter-model 을 domain 객체로 변경하는 역할도 가진 모듈 domainㄴ 실제로 비즈니스로직을 가질수있는 POJO 도메인 객체위 구조는 Aggregate 를 적용하지않았기때문에 향후 각각의 작은 서버로 구성할수있는 MSA 로 뺄수있는 구조는 아니에요 다만 그건 aggregate 모듈을 만들어서 빼면 되는거라 생각하는데 그것보다도 가장 궁금한점은..... 비즈니스 로직을 POJO 객체가 있는 domain 모듈로 파싱할때 JPA 기준 A 라는 유저가 가지고있는 게임플레이 히스토리들도 가지고있잖아요? 이건 POJO 객체로 가져올때 히스토리 객체들도 모두 가지고와서 POJO 내에 넣어야하나요?반대의 경우 히스토리에서는 유저객체를 들고있을텐데 이때 의존을 모두 가져와야하나요? 아니면 유저의 키값만 객체로 들고있으면될까요?만약 해당 유저가 한시간에 1000번의 게임을 했다고 가정하면 몇일만 조회해도 엄청 많은 데이터가 램으로 올라가기때문에 좀 부담스러운데 히스토리가 필요한경우 쿼리에 비즈니스로직을 담아 타협해야하나요?물론 드라마틱한 성능차이가 없다면 도메인에서 처리해도되겠지만 성능상 차이가 많이 난다면 쿼리에 비즈니르로직을 담아야하는게 아닌가싶어서요글이 좀 생각의 흐름대로 쓰인거같아 미리 죄송합니다 ㅠ
-
미해결
백엔드 아키텍처 공부를 해보고 싶은데요 책이나 강의 추천해주실 수 있을까요..
백엔드 단에서 어떤 아키텍처 속에서 데이터가 흐르는지 궁금해져서 찾아보고 있습니다. 예를 들면 저는 이때까지클라이언트 - 서버 - 웹서버 - DB이 구조만 알고 있었거든요.. 근데 현업에선 좀 더 복잡하고 그 아키텍처를 이루기 위해 다루는 툴들도 다양하더라고요...전 그 부분이 많이 약한 것 같아서 아키텍처 위주로 책이나 강의 찾아보고 있는데아키텍처 책이나 강의 중 어떤걸 우선적으로 선택해서 공부를 시작해야 하나 고민이 되어서.. 이렇게 문의 글을 남깁니다.. ㅠㅠ전 이쪽으론 완전 초보 입니다! 유튜브를 통해서 짧게 나마 익힌 건.. 검색 엔진을 위해서는 elasticsearch를 사용하고 DB 과부화 막기 위해선 redis를 사용한다..뭐 이런 내용을 봤는데저는 좀 더 전체적인 그림을 보고 싶습니다.. ㅠㅠ
-
미해결실전! 스프링 데이터 JPA
클린 아키텍처에서 JPA
클린 아키텍처 (및 헥사고날) 설계 시 JPA 영속성 계층을 어디에 두어야하는지 궁금합니다.일반적으로 해당 아키텍처에선 영속성 계층을 도메인 계층에서 분리시켜야 한다고 주장하던데 (육각형 안 Entity는 POJO이며, JPA Entity는 바깥의 Adapter에 구현하고 Mapper로 변환하는 형식), 이렇게 되면 JPA가 제공하는 lazy loading이나dirty checking 등의 이점은 포기해야 되는것일까요?도메인 모델에 JPA 코드를 사용하자니 이러한 아키텍트 원칙에 위배되는거 같고, 그렇다고 이걸 분리해놓으면 따로 구현해야될게 많아지니 고민입니다..타협을 한다면 어느 방식으로 하는게 좋을까요? 애초에 이러한 아키텍트 방식과 JPA는 (지향점이 다르기에) 어울리지 않는 것일까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
application.yml args에러발생이유
강의 잘 듣고있습니다~실습으로 따라하면서 하고있는데 application.yml에서 에러가 발생하는데 왜 그런것일까요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
스프링 시큐리티 문의 (webSecurityConfigurerAdapter 취소선)
안녕하세요. 스프링시큐리티 로그인관련 진행하다가 extends webSecurityConfigurerAdapter 가 취소선이 나와서 확인해보니 현재는 사용하지않는다고 알게되었습니다. 나름 바꾸면서 진행중인데authenticationManager() 를 사용하려면 어떻게해야되는지 알 수 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
catalog 테이블 자동 create-drop 가 안됩니다.
안녕하세요 application.yml 설정을하고 서버 시작 시 CREATE문자체가 동작을안하는것같습니다.application.yml 과 CatalogEntity.java 는 다음과같습니다. 문제가무엇일까요...
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
H2 최신 버전 사용 시 server mode 사용에 따른 application.yml 파일 설정(테이블은 생성됐는데 data.sql INSERT 안될 시 참고)
Spring Boot 3.XX 대 버전으로 최신 버전 사용 시 H2를 이전 버전으로 사용 불가합니다.따라서 H2를 따로 켜서 실행해준 후, catalog-service에서 Server mode로 연결하던지 따로 켜 둔 H2를 연결하던지 선택해야합니다. 이 때, Server Mode로 프로젝트와 H2를 연결시키면 강의 내용의 설정만으로는 data.sql의 INSERT 쿼리문이 동작하지 않습니다. 그렇기 때문에 관련 설정을 application.yml에 추가해주어야 하는데요. 아래와 같이 설정하면 됩니다. stackoverflow와 강사님의 2021년 답변을 참고하여 해결하였습니다. server: port: 0 spring: application: name: catalog-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console datasource: driver-class-name: org.h2.Driver url: jdbc:h2:tcp://localhost/mem:testdb username: sa jpa: hibernate: ddl-auto: create-drop show-sql: true generate-ddl: true defer-datasource-initialization: true sql: init: mode: always eureka: instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka logging: level: com.example.catalogservice: DEBUG 추가한 내용은 spring.jpa.defer-datasource-initialization과 spring.sql.init.mode 설정입니다.
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.
안녕하세요. 강의 잘듣고 있습니다.다만, 제가 이 강의부터 시작해서 그런지 용어에 대한 개념이 헷갈립니다. util 디렉토리와 source.kt 파일의 역할은 정확히 무엇인가요?util 디렉토리에 들어가는 파일들의 내용은 무엇이고,DataSource의 역할이 무엇인지 궁금합니다 !감사합니다..
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Boot 최신 3.XX 버전 Security 설정 공유드립니다.
최신 버전 진행하시는 분들을 위해 공유드립니다.Spring Security Configuration 설정 내용이 변경되었습니다. WebSecurityConfigurerAdapter 클래스가 deprecated되었는데요. 해당 클래스를 상속 받아 config 메소드를 구현하는 대신 SecurityFilterChain을 반환하고 직접 Bean으로 등록하도록 설정 방법이 바뀌었습니다. package com.example.userservice.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class WebSecurity { private static final String[] WHITE_LIST = { "/users/**", "/**" }; @Bean protected SecurityFilterChain config(HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().frameOptions().disable(); http.authorizeHttpRequests(authorize -> authorize .requestMatchers(WHITE_LIST).permitAll()); return http.build(); } } 강의 내용을 진행하기 위해서 강의에 나온 설정을 위처럼 설정해보았는데요. 일단 이렇게 설정하면 강의를 진행하는데 문제 없을 것이니 참고 바랍니다~
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
gradle
안녕하세요만약 9003번을 커맨드라인에서 gradle 명령어로 띄우려면 어떻게 해야하나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
kafka 설정 관련해서 올려주신 goolge drive 링크가 만료되었습니다
Error: Could not find or load main class org.apache.kafka.connect.cli.ConnectDistributedCaused by: java.lang.ClassNotFoundException: org.apache.kafka.connect.cli.ConnectDistributedkafka connect 설정도중 위의 에러가 해결되지 않아 통합 파일을 받으려했는데 페이지를 찾을 수 없다고 나옵니다.https://www.inflearn.com/questions/601451/windows-kafka-%EC%A0%95%EC%83%81-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94-%EB%B2%84%EC%A0%84-%EC%A0%9C%EA%B3%B5%EB%AC%B8%EC%9D%98https://drive.google.com/file/d/1GDrBskzAE4Y_GojNeXhGeN2YeMFrpFe-/view?usp=sharing링크 공유 다시해주시면 감사하겠습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
mysql.server start 명령어의 의미
따로 디비를 설치하는 것 없이 그냥 mariadb client를 주입받고 바로 해당 프로젝트에서 터미널로 mysql.server start를 하셨는데요이건 client를 주입받으면 해당 폴더에서 알아서 디비가 깔리는 구조인건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
윈도우 rabbitMQ 설치했는데 15672 접속이 안됩니다..
rabbitmq 정상적으로 실행은 되었는데localhost:15672 접속하면 페이지가 안뜹니다..운영체제 window이고..도와주세요....!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
비대칭키일 때 decrypt 질문입니다.
bootstrap.yml파일에는 암호화할 때 사용하는 개인키 위치만 알려줬는데 어떻게 복호화를 할 수 있는 건가요?디렉토리에 공개키를 생성했다고는 하지만 yml파일에 위치를 설정하진 않았는데 어떻게 복호화를 할 수 있는지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
UserDto 의 pwd 값 관련
안녕하세요. 좋은강의 감사합니다.다름이 아니라 강의에서 설명하실때는getUserDetailsByEmail 메소드에서 UserEntity 를 UserDto로 맵핑할때클라이언트가 입력한 password를 Spring Security 가 UserDto의 pwd 파라미터에 암호화하여 넣어준다는 식으로 말씀하신거 같습니다.@Override public UserDto getUserDetailsByEmail(String userName) { UserEntity userEntity = userRepository.findByEmail(userName); if(userEntity == null) throw new UsernameNotFoundException(userName); UserDto userDto = new ModelMapper().map(userEntity,UserDto.class); return userDto; 그게 아니라 단지, ModelMapper 에 STRICT 설정을 해주지 않아서 UserDto의 pwd와 encrytedpwd 값이 모두 UserEntity의 password 값으로 들어간게 아닌가 해서 질문드립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
HttpTraceRepository를 찾을수가없는데 어떻게해야하나요
메이븐에 dependency추가해도HttpTraceRepository를 찾을수없는데 어떻게 진행해야할까요?ㅜ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
API Gateway를 통해 라우팅 시 user service로 전달되는 요청 url에 대해 질문 드립니다..!
안녕하세요 선생님 강의 정말 잘 듣고 있습니다..!혹시 더 좋은 방법이 있을까 싶어 질문 드립니다. spring: application: name: api-gateway cloud: gateway: routes: - id: A uri: lb://USER-SERVICE predicates: -Path=/user-service/**위와 같이 gateway 설정을 하게 되면,user service에도 /user-service/ 라는 path가 같이 합해져 요청 url로 전달되어,Controller의 /user, /health-check, /welcome 같은 매핑을 모두 /user-service/user, /user-service/health-check, /user-service/welcome 으로 변경하라고 말씀 주셨습니다혹시 이렇게 컨트롤러의 매핑 정보를 변경하지 않고,api gateway 단에서 필터를 이용해 사용자 요청 url을 조작해서 라우팅 할 수 있는 방법이 있을까요..??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
jar와 war 패키징 차이 관해서 여쭤보고 싶습니다!
users microservice 프로젝트 생성 시, jar와 war의 차이에 대해서 언급해주신 부분에 대해 궁금한 점이 있어 질문 드립니다! 설명 해주시기로, jar로 패키징 시 임베디드 톰캣을 통해 실행이 된다고 하셨는데, IDE에서 프로젝트 실행 시에도 jar는 jre를 통해서 실행되는 것이 아닌가요?.. war로 패키징하는 프로젝트가 웹 어플리케이션 구조로 임베디드 톰캣에 의해 기동된다고 알고 있어서 혼란스러운 부분이 있어서요! 제가 IDE에서 기동할 때와 그냥 서버 위에서 기동할 때를 혼돈하고 있는 걸까요??..
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
/health_check를 실행했을 때, 값이 바뀌지 않습니다.
안녕하세요.user-service application.ymlspring: application: name: user-service cloud: config: name: ecommerce config: import: optional:configserver:http://localhost:8888포스트맨에서, POST방식으로 actuator/refresh를 실행했을 때,org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: main위와 같은 에러가 발생해서 main 브랜치를 추가했더니, actuator/refresh를 실행했을 때 에러가 발생하지 않게 되었습니다.예를 들어, token.secret 값을 변경하고 main브랜치에 커밋한 후, actuator/refresh를 실행하면 정상적으로 refresh가 되는 것 같습니다.[ "config.client.version" ]http://localhost:8888/ecommerce/default 에서도 값이 변경되는 것을 확인했습니다. "source": { "token.expiration_time": 86400000, "token.secret": "user_token2", "gateway.ip": "192.168.0.8" }그런데, /health_check를 실행해보면 새로운 값으로 변경되지 않습니다.It's working in user service, port(local.server.port)=61250, port(server.port)=0, token secret=user_token1, token expiration time=86400000어디가 잘못된 건지 혹시 알 수 있을까요?