inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Git의 하나의 Repository 안에서 branch별 배포가 가능한가요?

미해결

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

안녕하세요. 저는 IT 교육 프로그램에서 5명의 팀원과 프로젝트를 진행하고 있습니다. GitLab에서 하나의 Repository 안에서 작업을 하고 있습니다. 테스트 서버와 실환경 서버를 분리해서 진행해보려고 합니다. 그러기 위해 master 브랜치에 Push 될 때는 테스트 서버에 배포를 하고, master 에서 테스트 이후에 안정적인 코드를 production 이라는 브랜치에 Push 하려고 합니다. 이때 하나의 Repository에서 브랜치별로도 다른 서버로 배포를 진행할 수 있나요?

  • aws
  • docker
  • github
  • ci/cd
  • travis-ci
  • 데이터-엔지니어링
송병훈 댓글 1 좋아요 0 조회수 933

블로그 포스팅 관련 문의

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요 강사님 먼저 좋은 강의 만들어주셔서 감사드립니다. 다름이 아니라 혹시 강의 내용과 pdf 강의 자료를 개인 블로그에 정리해서 올려도 되는지 여쭙고자 글 남겨드렸습니다. 다른 분들과 공유보다는 스스로 복습하는 용도로 글을 작성하는 목적이 크지만 인터넷에 올라오는 내용인 만큼 먼저 허락을 구하고자 합니다. 최대한 지양하겠지만 가끔씩 강의 혹은 pdf 파일 속 그림이나 사진을 올리는 경우가 있을 수도 있을 것 같습니다만 이 때는 당연히 출처를 남기겠습니다. 만약 불가하시다면 비공개 처리하여 공유 및 열람이 안 되도록 조치해놓겠습니다. 감사합니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
hyunyoung 댓글 1 좋아요 1 조회수 287

MySql Lock을 사용하지 않는 이유

미해결

실습으로 배우는 선착순 이벤트 시스템

강의에서 설명해주시기로는 쿠폰 개수를 가져오는 것부터 쿠폰 생성까지 lock을 걸어야 한다고 설명 주셨는데 이전 강의인 재고 관리 이슈와는 다르게 row가 아닌 table에 lock을 걸기 때문에 성능 이슈가 발생한다고 보면 될까요?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
데자와아 댓글 2 좋아요 0 조회수 1236

윈도우로 volume 적용 실패할 때

해결됨

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

아래 n 번째에 윈도우에서 %cd% 로 경로 설정해도 안되는 증상이 같아서 해결방법을 알려주신 분이 계신데, 그 방법으로 해결해서 글 남깁니다. docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v "/$(pwd)/server.js:/usr/src/app/server.js" thdqudgns/node 처럼, 마운트 할 앞 경로 전체를 큰 따옴표로 감싸주고, 앞쪽에는 /${pwd}/server.js 를 적어서 파일을 명시해주고, 뒤쪽에도 /usr/src/app/server.js로 파일을 명시해주니 예제는 잘 해결되었습니다. 그러나 고민이... 실제로 프로젝트를 진행하면서 배포를 하고 빌드를 할 때에는 폴더 단위로 작업이 이루어져야 하는데, 파일 단위로만 되는 것을 확인하여서 앞이 막막합니다... ++ 터미널을 우분투 (wsl) 로 열어서 $(pwd) docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app thdqudgns/node 로 하니까 잘 되네요.. 터미널이 이상한 걸로... 조만간 토이프로젝트를 AWS에 올릴 예정인데 문제가 없기를...

  • aws
  • docker
  • github
  • ci/cd
  • travis-ci
  • 데이터-엔지니어링
송병훈 댓글 1 좋아요 0 조회수 523

react s3 CloudFront 연결

미해결

AWS 전 직원이 알려주는 AWS 아키텍처

안녕하세요 s3 부분을 학습하면서 궁금한 부분이 있습니다. 혹시 React를 s3 cloudFont로 배포를 하면 Spring을 배포하면 static website hosting 부분에 설정하면 되나요??

  • aws
퓨퓨 댓글 1 좋아요 0 조회수 429

실제 서비스 배포시

미해결

AWS 전 직원이 알려주는 AWS 아키텍처

생성한 Instance를 AMI 로 만들어 Auto Scaling을 진행한다고 하셨습니다. 실제 서비스 배포 환경에서 생성한 Instance에 CI/CD 자동화 배포 코드를 올려놓은 후, 그 Instance를 AMI로 만들어 Auto Scaling을 진행하게 되면, Git에서 코드가 변경됐을시, AMI를 진행한 Instance 또한 코드가 바뀌게 되나요?

  • aws
댓글 1 좋아요 0 조회수 434

질문있습니다

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

강사님이 올려주신 파일이 아니라 Spring Initializr 여기서 직접 생성한 다음에 프로젝트를 진행하려고 하는데 이노테이션 ?에노테이션이 안먹습니다.. 아마 그래들 파일 문제인것 같은데 강사님 올려주신 동영상에는 그래들파일 수정하라는 말은 없었거든요 ;; 빠른답변 부탁드립니다 그리고 MYSQL 설치할떄도 디폴트디벨로퍼 항목이 없습니다;; 강좌 왜이런지 ;;

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
이용선 댓글 1 좋아요 0 조회수 383

프로젝트 진행중인데..

미해결

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

현재 프론트와 백 나눠서 프로젝트를 진행중입니다. 강의에서는 하나의 레파지토리에 프론트폴더, 백앤드폴더, docker-compose.yml 파일이 있던데 저희는 오가니제이션으로 사용중이며, 프론트레파지토리, 백앤드레파지토리 나뉘어져있는 상황입니다. 이 상황에서 프론트레파지토리는 nginx를 위한 Dockerfile과 리액트를 위한 Dockerfile, 백앤드 레파지토리는 스프링부트에 대한 Dockerfile, docker-compose.yml에는 redis 및 스프링부트에 대한 dockerfile정보 등이 들어가는게 맞을까요? 결론은, nginx가 백앤드 레파지토리에도 필요한 것이 일반적인 것인지 여쭤봅니다!

  • aws
  • docker
  • github
  • ci/cd
  • travis-ci
  • 데이터-엔지니어링
qkrtngus116 댓글 1 좋아요 0 조회수 457

[이진 탐색 실전 문제] 원하는 정수 찾기 편 질문

미해결

Do it! 알고리즘 코딩테스트 with JAVA

안녕하세요? 강의를 듣다가 궁금한 것이 생겨 질문 드립니다. 자바의 정렬 기본 알고리즘 시간 복잡도와 이진 탐색 시간 복잡도가 nlogn인 건 이해했는데, 코드부를 보면 이중 반복문이 나오고 있습니다. 앞 서 강의에서 반복문을 기준으로 이중 반복문이면 n의2승이라고 말씀하셨는데, 이 중 반복문을 썼는데도 nlogn이 되는 건 반복문이 진행되는 동안 절반씩 찾기 때문인가요?? 만약 이중 반복문으로 시간 복잡도가 올라간다면 이중 반복문을 쓰지 않고, 해결하는 방법을 알려주실 수 있으실까요?

  • java
  • 코딩-테스트
  • 알고리즘
댓글 1 좋아요 0 조회수 519

mysql 설치 중 질문

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

mysql 설치 중 developer default라는게 안떠서 custom을 눌러서 connector들을 직접 추가해주려고 하는데 현재 8.0.34 버전은 안뜨네요 혹시 connector는 다른 버전을 설치해도 될까요? 그리고 만약 설치한다면 x86으로 돼있던데 제 컴퓨터는 64비트인데 설치해도 되는건가요?? 아 그리고 제가 예전에 mysql을 설치했었다가 오류가 떠서 완전히 지우고 이번에 다시 설치하는겁니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
alsgudtkwjs 댓글 2 좋아요 1 조회수 3048

수강기한 연장 요청드립니다

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

일이랑 병행하면서 열심히 공부중이나 기한이 부족합니다 기한 연장 부탁드리겠습니다 ㅠㅠ

  • 네트워크
  • aws
김명주 댓글 1 좋아요 0 조회수 347

인터페이스 강의를 듣고 궁금증이 생겼습니다.

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

1. interface클래스내에 정의된 메써드는 public abstract이고, 변수는 public static final이 자동으로 앞에 정의가 된다고 하셨는데 이건 고정인건가요? 다른 형태로 봐꿀 수 있나요? 봐꿀 수 없다면 왜 그러한지가 궁금합니다. interface 클래스를 implements해주고 추상클래스를 extends 해주는 것은 둘 다 상속인건가요? 둘다 부모 클래스가 되는건가요?

  • java
  • 객체지향
최은희 댓글 1 좋아요 1 조회수 295

https 이후 git clone 도는 git pull

미해결

비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지

certbot을 통해 https를 적용한 뒤에 front 파일에 변경, 추가할 파일이 있어서 git pull origin main으로 시도해 봤지만 타임 아웃 에러가 걸리고 혹시 clone으로 하면 될까 해서 해봤지만 역시 타임아웃 에러가 걸렸습니다. 방법을 찾아보려고 열심히 구글링 2일간 해봤지만 도무지 개선이되질 않아서 ㅠㅠ 혹시 문제원인이나 해결방안 귀뜸해 주시면 감사하겠습니다.

  • HTML/CSS
  • javascript
  • aws
  • git
  • mysql
  • rest-api
  • github
전예준 댓글 1 좋아요 0 조회수 359

war 파일로 tomcat 배포 방법 문의?

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

jar 파일이 아닌 war 파일로 빌드하여, tomcat에 배포하고 싶었습니다. tomcat 배포 방법을 알려주시면 감사하겠습니다. 사실 검색하여 해보았으나, 이상하게 404 에러가 계속 나오고 있습니다. ㅜㅜ intellj에서는 문제 없고, jar 파일 생성후, 실행해도 문제는 없는데, war파일을 tomcat 배포시 문제가 있습니다. 강사님의 많은 경험으로, 답변 주시면 감사하겠습니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
빈빠 댓글 1 좋아요 0 조회수 1436

강의와 다른 출력에 대한 내용 정리

미해결

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

[internal] load .dockerignore : .dockerignore 파일을 로드하는 단계입니다. .dockerignore 파일은 Docker 이미지를 빌드할 때 무시할 파일 또는 디렉토리를 지정하는 파일입니다. [internal] load build definition from dockerfile : Dockerfile을 로드하는 단계입니다. Dockerfile은 이미지 빌드에 필요한 설정과 명령어들을 정의하는 파일입니다. [internal] load metadata for docker.io/library/alpine:latest : Docker Hub에서 Alpine Linux의 최신 이미지에 대한 메타데이터를 로드하는 단계입니다. FROM docker.io/library/alpine 명령어에서 사용된 "alpine" 이미지를 가져오기 위한 작업입니다. [1/1] FROM docker.io/library/alpine : Alpine Linux를 기반으로 이미지를 생성하는 단계입니다. FROM 명령어는 이미지의 베이스로 사용할 이미지를 정의하는데, 여기서는 Docker Hub의 Alpine Linux 이미지를 사용합니다. exporting to image : 이미지를 빌드하고 있는 단계가 끝났으며, 이미지를 내보내는 단계입니다. => exporting layers : 이미지의 레이어를 내보내는 단계입니다. Docker 이미지는 여러 레이어로 구성되어 있으며, 각 레이어는 변경된 파일들을 포함하고 있습니다. => writing image sha256:c85225625fb8e8572c14c74944213a43a1b92fe78b270278bde228 : 최종 이미지를 기록하는 단계입니다. 이미지의 SHA256 해시값을 보여주며, 해당 해시값으로 이미지를 식별할 수 있습니다

  • aws
  • docker
  • github
  • ci/cd
  • travis-ci
  • 데이터-엔지니어링
김종식 댓글 1 좋아요 7 조회수 683

수강 기간 연장 요청

미해결

AWS Certified Advanced Networking - Specialty 자격증 준비하기

안녕하세요. 일과 병행하며 듣고 있어 수강기간 연장이 부득이하게 필요합니다. 수강기간 요청 부탁드립니다. 감사합니다!

  • 네트워크
  • aws
아이러브 댓글 1 좋아요 0 조회수 298

docker rm `docker ps -a -q` 명령어 안 먹으시는 분들에게

미해결

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

강사님은 mac 환경에서 진행 하셔서 cmd 에서 ` 백틱으로 사용하십니다. 윈도우 환경에서는 ` 대신 $() 사용을 해야하고 해당 기호도 powershell에서만 적용이 됩니다. docker rm $(docker ps -a -q) 위의 명령어를 powershell에 입력 하시면 됩니다.

  • aws
  • docker
  • github
  • ci/cd
  • travis-ci
  • 데이터-엔지니어링
김종식 댓글 1 좋아요 1 조회수 432

isEqualTo를 isSameAs로 바꿔야하는것이 아닌가요??

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() throws Exception { //given Member member = new Member(); member.setUsername("memberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then assertThat(findMember.getId()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); assertThat(member).isEqualTo(findMember); System.out.println("findMember == member: " + (findMember == member)); } } 위 코드에서 디비에 넣은 멤버와 찾은 멤버가 같은지를 비교를 isEqualTo를 사용을 하셨는데 이것은 제가 알기론 value부분만 같다면 true라는것으로 알고 있습니다. 같은 영속성 컨텍스트 안에서의 객체가 같은지 확인하려면 isSameAs가 맞지 않은지 의문이 생겼습니다!

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
hello0718 댓글 1 좋아요 0 조회수 341

Elasticache에서 바로 Client에게 데이터를 넘겨주는 기능이 있는지 궁금합니다.

해결됨

하루만에 배우는 AWS REDIS

질문을 한 배경 : 12강의 Write Through의 시퀀스 다이아그램을 보면서 궁금해졌습니다. 질문내용 : 3:16 부분의 다이어그램을 보면 elasticache에 있는 데이터를 client에게 직빵으로 전달되는게 가능하듯이 보이는데, API server을 안거치고 캐쉬된 데이터를 client에게 넘기는 것이 가능한지 여쭈어보고 싶습니다! 만약 API Server을 무조건 한번 경유해야한다면 흐름도는 첨부한 그림처럼 되는 것이 맞는지 질문드립니다. ↓↓↓

  • aws
  • redis
  • aws-elasticache
  • memcache
ChuStory 댓글 1 좋아요 1 조회수 397

테스트 시행 시 롤백

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

게시글 조회5-페이징처리(QueryDSL) 강의 내용 이후 전체 테스트를 시행하면 PostControllerTest에서 test5, test6에서 id값을 검증할때에 이전의 테스트에서 PostRepository에 저장이 되어 test5에서는 id값이 30이어야하는데 33이고, test6에서는 30이어야하는데 63으로 이전 테스트 수행 결과가 롤백되지 않아요. BeforeEach랑 Transactional 둘 다 사용해보았는데 테스트가 독립적으로 수행되지 않습니다. 찾아보니 sequence는 롤백되지 않는 것이 DB의 기본 규칙이라는데 호돌맨님은 강의에서 전체 테스트를 수행하여도 모든 테스트케이스가 통과되어서 코드에서 어떤 부분이 다른지 궁금합니다. package com.blog.controller; import com.blog.domain.Post; import com.blog.repository.PostRepository; import com.blog.request.PostCreate; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; import static org.hamcrest.Matchers.is; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @AutoConfigureMockMvc @Transactional class PostControllerTest { // TODO ObjectMapper 공부하기 @Autowired private ObjectMapper objectMapper; @Autowired private MockMvc mockMvc; @Autowired private PostRepository postRepository; @Test @DisplayName("/posts 요청 시 출력한다.") void test() throws Exception { // given PostCreate request = PostCreate.builder() .title("제목입니다.") .content("내용입니다.") .build(); String json = objectMapper.writeValueAsString(request); // expected mockMvc.perform(post("/posts") .contentType(APPLICATION_JSON) .content(json)) .andExpect(status().isOk()) .andDo(print()); } @Test @DisplayName("/posts 요청 시 title 값은 필수다.") void test2() throws Exception { // given PostCreate request = PostCreate.builder() .content("내용입니다.") .build(); String json = objectMapper.writeValueAsString(request); // expected mockMvc.perform(post("/posts") .contentType(APPLICATION_JSON) .content(json)) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.code").value("400")) .andExpect(jsonPath("$.message").value("잘못된 요청입니다.")) .andExpect(jsonPath("$.validation.title").value("타이틀을 입력해주세요.")) .andDo(print()); } @Test @DisplayName("/posts 요청 시 DB에 값이 저장된다.") void test3() throws Exception { // given PostCreate request = PostCreate.builder() .title("제목입니다.") .content("내용입니다.") .build(); String json = objectMapper.writeValueAsString(request); // when mockMvc.perform(post("/posts") .contentType(APPLICATION_JSON) .content(json)) .andExpect(status().isOk()) .andDo(print()); // then assertEquals(1L, postRepository.count()); Post post = postRepository.findAll().get(0); assertEquals("제목입니다.", post.getTitle()); assertEquals("내용입니다.", post.getContent()); } @Test @DisplayName("글 1개 조회") void test4() throws Exception { // given Post post = Post.builder() .title("123456789012345") .content("bar") .build(); postRepository.save(post); // expected mockMvc.perform(get("/posts/{postId}", post.getId()) .contentType(APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(post.getId())) .andExpect(jsonPath("$.title").value("1234567890")) .andExpect(jsonPath("$.content").value("bar")) .andDo(print()); } @Test @DisplayName("글 여러개 조회") void test5() throws Exception { // given List<Post> requestPosts = IntStream.range(1, 31) .mapToObj(i -> Post.builder() .title("호돌맨 제목 " + i) .content("반포자이 " + i) .build()) .collect(Collectors.toList()); postRepository.saveAll(requestPosts); // expected mockMvc.perform(get("/posts?page=1&size=10") .contentType(APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.length()", is(10))) // .andExpect(jsonPath("$[0].id").value(30)) // sequence는 롤백되지 않음(DB 기본규칙) - mysql 계열이라면 auto_increment로 생성한 값은 commit, rollback 에 상관없이 한번 생성한 값을 그대로 유지합니다. .andExpect(jsonPath("$[0].title").value("호돌맨 제목 30")) .andExpect(jsonPath("$[0].content").value("반포자이 30")) .andDo(print()); } @Test @DisplayName("페이지를 0으로 요청하면 첫 페이지를 가져온다") void test6() throws Exception { // given List<Post> requestPosts = IntStream.range(1, 31) .mapToObj(i -> Post.builder() .title("호돌맨 제목 " + i) .content("반포자이 " + i) .build()) .collect(Collectors.toList()); postRepository.saveAll(requestPosts); // expected mockMvc.perform(get("/posts?page=0&size=10") .contentType(APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.length()", is(10))) // .andExpect(jsonPath("$[0].id").value(30)) .andExpect(jsonPath("$[0].title").value("호돌맨 제목 30")) .andExpect(jsonPath("$[0].content").value("반포자이 30")) .andDo(print()); } }

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
enimbe99 댓글 2 좋아요 0 조회수 528

인기 태그

인프런 TOP Writers

주간 인기글