Experience

0. 무중단배포? 블루그린(blue/green)? 기존에 Spring Boot → Github Actions → Docker image Build → image push to docker hub → image pull to ec2 → image run 이었던 방식에는 push 가 발생하면 서버가 업데이트 되는 동안 잠깐 서버가 내려가는 downtime이 발생한다. 따라서 서비스가 중단되지않고 유지되기 위해서 무중단배포를 진행하였다. 블루 그린 배포방법은 무중단 배포 기법의 하나다. 동작 방식은 다음과 같다. 8080포트를 blue, 8081포트를 green이라 가정한다. blue 포트로 서비스를 실행중일때 업데이트가 일어나면 green 포트로 호스팅을 옮겨 서비스를 말그대로 번갈아가며 배포하는 방법이다...
1. Docker가 뭔데? 도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 응용 프로그램과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 기술이다. 이를 통해 응용 프로그램을 서로 다른 환경에서도 일관되게 실행할 수 있고, 개발 환경과 운영 환경 사이의 차이로 인한 문제를 줄일 수 있다. 본 프로젝트에서는 AWS S3와 CodeDeploy 조합 대신 Docker를 선택했는데 이유는 아래와 같다. Docker 컨테이너는 이식성이 뛰어나고 Docker 지원을 통해 모든 시스템에서 일관되게 실행될 수 있어 S3 및 CodeDeploy를 사용한 기존 배포에 비해 플랫폼 독립성이 뛰어나다. 또한, CodeDeploy는 AWS 환경과의 연동에 대한 이해와 학습곡선이 존재하고, 환경별로 관리해줘야한..
0. 들어가기 전에! 앞으로 다가올 실전프로젝트에 서비스팀과 챌린지팀으로 나눠진다는 소식이 있었다. 운이 좋게도 기술매니저님의 추천을 받아 챌린저팀에 들어올 수 있었고, 기존 서비스팀과는 다르게 대용량 트래픽 처리에 관점을 맞춘 프로젝트를 진행하게 되었다. 자바, 스프링도 항해를 통해서 처음 접하고 맛본건데 내가 이걸 할 수 있나..? 라는 생각이 들지만서도.. 감사한 기회라고 생각하고 도전에 임했다. 기본적인 CRUD 기능을 구현하고 팀원별로 프론트파트 보강작업, Spring security, CI-CD 2명으로 나뉘어 작업을 진행하였다. 나와 도현님, 둘이서 CI-CD를 맡게되어 구글링과 gpt로 조사하고 레퍼런스들을 참고하며 적용해본 기록들을 늦게나마 남겨보려한다. 1. 왜? Why? Github ..
What I learned 1. 자바 복습 (~다형성까지) - 김영한 강의로 개념 복습 2. 스프링 입문 2-1) PostMan - Rset API 표현가능. - url을 바로 확인하기에 편리함. 2-2) Mysql 2-3) MVC? - Model / View / Controller 로 나누어 프로그래밍하는 방법 2-4) 스프링에 대해 3. 테스트 코드 작성? 3-1) given / when / then 단계를 만족하도록 테스트를 작성하자. - given : ~한 상황이 주어졌을 때 (이 데이터를 기반으로) - when : ~를 실행했을 때 (검증할 것을 실행) - then : ~해야 한다. (검증한 결과가 ~가 나와야함) 3-2) AssertJ - 보통 then 단계에서 사용되는 자바 라이브러리. 에러..
D-88 fact - 할당량을 못채웠다. 내일부터 주특기주차 시작이라 Spring 할텐데, 자바를 목표한 곳 까지 공부를 못했다. 너무많다.. 큰일났다? - 내일 조가 바뀐다. 너무 금방금방 바뀌는 것 같다. 기술매니저님도 또 바뀌겠지? 흠.. feeling - 조바심, 할게 너무많은데, 시간도 없고, 집중도 안되고 총체적 난국~ findings - 의존성이란? => 객체의 세계에서 협력은 필수적이며, 객체가 협력한다는 것은 객체 간의 의존성이 존재한다는 것이다. 여기서 의존성이란 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것을 의미한다. - 의존성의 전이, 의존성이 위험한 이유??? => 의존성은 객체 간의 협력을 위해 필수적이다. 하지만 의존성은 위험하므로 의존성은 최소화되어야 한..
기술매니저님께서 solid 5원칙를 준수하는 코딩을 해보라고 과제를 내주셨다. 과제는 7조 인원들끼리 각자 만들어보고 서로 코드리뷰를 하는 방식으로 진행됐다. 사용자에게 입력을 받아 간단한 계산을 하는 계산기 기능을 만들었는데, 계산은 첫번째 숫자입력, 연산기호, 두번째 숫자입력 순으로 받아 연산해주는 간단한 기능을 구현하였다. 사실 간단하게 만드려면 간단하게 만들 수 있는 쉬운 예제지만 코드 리팩토링 경험과 solid 5원칙을 지키는지 스스로 검토해보는 경험을 시켜주시려고 내주신 과제같다. 우선 solid 5원칙의 단일책임원칙에 의해 클래스의 기능들을 최대한 나눠주었다. 일단 계산기가 실행되면 입력을 받아야하므로 사용자에게 입력받는 클래스를 따로 만들어주었다. import java.util.Scanne..
chillmyh
'Experience' 카테고리의 글 목록 (7 Page)