🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

블로그

[ 인프런 워밍업 클럽 4기 Devops ] 3 주 차 발자국 (13일의 금요일 -안상민)

월 - 데브옵스 한방 정리화 - 손쉽게 데브옵스 환경을 구축하는 방법수 - 배포를 시작하기 전에 반드시 알아야 할 것들목 - Jenkins Pipeline (기초부터 Blue/Green 까지)A금 - Helm과 Kustomize 비교하며 사용-1 칭찬하고 싶은 점좋은 선생님을 만나 아직은 끝나진 않았지만 잘 마무리 할 수 있을것 같다는 느낌이 듭니다! 마라톤을 빗대어 말하자면 좋은 페이스 메이커가 만들어준 러닝 페이스를 잘 따라가고 있다는 생각이 들어 보람도 있고 잘하고 있다고 칭찬을 하고 싶네요.  아쉬웠던 점취준하면서 알바 하며 생활비를 충당하고 있는데 이번주에는 다음주 것 까지 마무리 지어 놓으려고 했었습니다만 못한것이 아쉽습니다. 그리고 이미 레퍼런스가 카페에 있는데 찾아 보지 않고 리눅스 커널이 뻗어버리는 버그를 혼자힘으로 해결 해보겠다고 이틀을 보낸게 영 도움이 되지 않은건 아니지만 시간을 잘 활용해서 쓰지 못했다는 생각이 들어 좀 아쉽네요. 보안해야 될 점버그나 에러가 발생했을 때 보통 수강생분들 환경에서 일어 나 듯이 우선 관련되어 있는 그룹에서 케이스를 찾아보거나 해당 커뮤니티에서 도움을 요청하려 합니다.  회고 저는 서른 초반입니다. 25세 때 처음으로 하프 마라톤을 해본적이 있습니다. 끝까지 완주해본 기억이 너무 뿌듯해서 아직까지 그 추억이 좋아서 지금까지 러닝을 해왔는데요. 일프로 강사님도 러너이시고 마라톤을 하신다고 하셔서 단방향이지만 그 이야기를 듣고 무척 내적 친밀감이 들었습니다.  그리고 이번 주를 회고를 하자면 벌써 이 과정도 75 프로나 왔네요.블로깅은 IT 업계를 들어오고 나서 복습이나 트러블 슈팅할 때 마다 정리해서 블로그 글로 게시하는 습관이 우리의 실력을 쌓는다고 종종 들어왔습니다.다음에 쓰일 때가 되서 까먹었다고 할지라도 아카이브 처럼 언제든지 쉽게 찾아 볼 수 있어서. 빠르게 다시 습득 할 수 있다고 귀에 익히 들어서 시작했지만 몇 일 못가고 지속하지 못한 기억들이 꽤 있는데,귀찮으면 잘 하지 않는 나를 잘아시는지 이번에 다시 그 중요성을 상기 시켜 주셔서 다시 블로그에 복습 글을 올리기 시작했습니다. 지인 추천을 받아 시작한 이 과정을 마라톤에 대입 해보자면 마치 페이스 메이커분을 잘 만났다는 생각이 듭니다. 좀 힘들어할 때 즈음 격려의 메세지로 힘을 주시는 것이 마라톤 대회 때 화이팅이라고 외쳐주시는 같은 마라톤 참가자 분들 서포터 분 처럼 많은 도움이 되었습니다. 마라톤이 장거리 스포츠인 만큼 전략도 필요한데 초반에 무리해서 달리면 후반가서 달리기 힘든데 이번주 수업도 추천해주시는 전략도 참 유익했던것 같습니다. DevOps 파이프 라인 수업도 1~4단계로 나눠서 처음부터 점점 복잡한 레벨로 올라가는 것이 처음 부터 뛰기 힘든 강도로 뛰는게 아니라 차근차근 천천히 뛰기 시작해서 점점 강도를 올리기는거 처럼 IT업계의 커리어도 안정적으로 늘려 나아가는데 있어 가장 좋은 방법론 이라 생각이 들었습니다.  남은 한주 마지막까지 화이팅 입니다! ※ 배운 내용 정리   

데브옵스 · 인프라쿠버네티스어너더클래스3주차회고

한범석

인프런 워밍업 클럽 0기 - 백엔드 코스 (3주차 회고)

인프런 워밍업 클럽 3주차까지 마무리했습니다. 이번 주에는 JPA를 객체지향적으로 사용하는 방법과 실제 서버를 배포하는 방법, 설정 파일들에 대해 배울 수 있었습니다.하나의 강의를 들으면서 프로젝트 설정부터 개발, 실제 배포까지 배울 수 있어 알찬 구성이었던 것 같습니다.마지막 회고를 통해 배운 내용을 정리해보도록 하겠습니다. 10일차이전에 JPA를 활용해 개발을 했을 때 테이블의 연관관계를 그저 외래키를 Long타입으로 가지고 있는 형식으로 사용했습니다. 이렇게 사용하는 것은 그저 Table을 매핑해주는 역할로만 Jpa를 활용하고 있는 상태입니다.그러므로 테이블과 연결된 엔티티를 좀 더 객체지향적인 방식으로 사용할 수 있는 방법에 대해 알아보았습니다.테이블의 연관관계를 정의할 때 1:1, 1:N, N:M의 관계를 갖게 됩니다. 이를 좀 더 객체지향적인 방법으로 각 엔티티가 다른 엔티티를 연결시켜줄 수 있습니다.A, B엔티티가 1:1 연관관계를 가질 경우를 예로 들면, A 엔티티 클래스 안에 멤버 변수로 연결된 엔티티 B를 선언해주고 @OneToOne을 통해 1:1 연관관계를 맺고 있다는 것을 알려줍니다. 이 후 연관관계를 맺은 두 엔티티 중 연관관계의 주인을 정해주면 됩니다.연관관계의 주인은 해당 관계의 우위를 점하고 있다는 뜻이 아니라 어떤 엔티티가 외래키를 관리할지 결정해주는 것입니다.테이블에서는 연관관계를 외래키를 통해 맺고 단방향 연관관계만을 가집니다. 하지만, 엔티티와 같은 경우 연관관계를 갖는 엔티티가 양방향 연관관계를 맺을 경우가 있습니다. 이럴 경우 하나의 엔티티에서 연관관계를 끊거나 다른 엔티티로 변경되었을 경우 이를 실제 DB 테이블에 변경사항을 저장해야 합니다. 이럴 경우 연관관계의 주인을 통해 외래키를 변경하거나 제거함으로써 연관관계를 수정하도록 하는 것입니다.연관관계의 주인은 @JoinColumn으로 선언해줍니다. 양방향 연관관계를 가지고 연관관계의 주인이 아닌 쪽에는 mappedBy를 통해 연관관계의 주인을 알려줍니다. @OneToOne과 @ManyToOne은 Fetch 전략이 EAGER로 되어 있습니다. EAGER전략은 엔티티를 조회하면 연관된 엔티티도 함께 조인을 통해 조회하게 됩니다. 이럴 경우 의도치 않은 join문이 발생하기도 하고, 또한 가장 안 좋은 경우인 N+1개의 쿼리가 발생하는 경우도 발생하게 됩니다. 그렇기 때문에 우선 Fetch 전략은 모두 LAZY로 변경하는 것이 최적화를 위한 좋은 방법입니다. 11일차현재 서버는 로컬에 배포된 상태로 이 서버에 접근하기 위해서는 실제 제가 있는 집에 방문해 보는 것 밖에 없습니다.그러므로 이 서버를 실제 여러 사람들에게 공개하기 위해서는 다른 사람들이 접근할 수 있는 컴퓨팅 시스템에 이를 노출시켜야 합니다. 이러한 컴퓨팅 자원을 원하는 만큼 제공해주는 것을 클라우드 서비스 중 하나인 IaaS라고 합니다.IaaS를 제공하는 회사 중 하나인 AWS의 무료 인스턴스를 통해 웹 서버 배포를 시도해보았습니다. 우선 웹 서버의 ip를 할당받고 포트포워딩을 통해 ssh 접속을 시도하거나 웹서버 접근을 위한 포트를 열어줍니다.또한, 빌린 인스턴스에서 서버를 동작시키기 위해서는 현재 작성한 코드를 전부 인스턴스로 이동시켜야 합니다. 모든 코드를 수동으로 전송하는 것은 굉장히 비효율적인 작업이므로 이를 해소하기 위해서 분산 버전 관리 툴인 Git과 GitHub를 이용해보도록 하겠습니다. 12일차AWS를 통해 EC2 인스턴스를 받은 다음, 배포에 필요한 Git, Java, MySQL 등을 설치해줍니다.그리고 GitHub를 통해 지금까지 작성한 코드를 git pull을 통해 받습니다.인스턴스 내에서 코드를 빌드하고 실행시킨다면 해당 인스턴스의 ip주소를 통해 접속이 가능해집니다.또한, 백그라운드 실행을 통해 해당 인스턴스에 대한 ssh접속이 끊어져도 실행이 계속되도록 유지시킬 수 있습니다. 13일차build.gradle의 여러 설정들에 대해 알아보았습니다.Spring 프레임워크를 사용하기 위해서는 트랜잭션, 톰캣, 다른 라이브러리들을 위한 설정들을 xml문법으로 작성해주어야 했습니다. 이러한 불편함을 해소하기 위해 여러 설정들을 자동으로 도와주고, 메이저 라이브러리일 경우 starter를 통해 버전을 작성하지 않더라도 알아서 호환되는 버전으로 사용하도록 도와주는 Spring Boot가 사용되고 있습니다. Spring Boot는 xml 뿐만 아니라 yaml이라는 마크업 언어를 통해 설정을 작성할 수 있습니다. 롬복은 getter나 setter 등 반복적으로 나타나는 코드를 어노테이션 형식으로 지원해주는 기능입니다. Spring Boot나 다른 프레임워크의 버전 업을 시도할 경우 변경해줘야 하는 부분은 무엇인지 차근히 확인하고 변경해주는 것이 좋을 것이다.Spring Boot가 3.0.0으로 넘어오면서 변경된 점은 Java의 최신 버전이 17로 업그레이드 되었고 javax 대신 jakarta 패키지를 사용하게 됐습니다. 이렇게 변경된 점을 IDE나 build.gradle, 실제 코드에 모두 반영시켜야 되기 때문에 신중하게 작업해야될 것 같습니다. 미니 프로젝트https://github.com/beomseok37/practice-spring-boot/tree/main/company 14일차 & 진짜 후기이렇게 모든 강의를 마무리하게 되었습니다. 전반적인 백엔드 개발에 필요한 지식들을 얻어갈 수 있어 좋았습니다.저와 같은 경우에는 이전에 JPA에 관련된 강의도 조금 수강을 한터라 배운 내용을 점검하는 방식으로 진행했던 것 같습니다.Spring Boot를 활용하면서 Spring에 대한 정보보다도 다른 데이터베이스, 리눅스 문법, 설정 파일 등 다양한 지식을 얻을 수 있어 좋았습니다.이후에는 현재 배운 내용들과 함께 좀더 동적으로 쿼리를 다룰 수 있는 방법을 통해 개인 프로젝트를 진행하면서 실제 스프링 동작 원리에 대해서도 깊게 파해쳐보는 시간을 가져보려고 합니다.

백엔드인프런워밍업클럽3주차회고백엔드코스

채널톡 아이콘