전체 글 (172) 썸네일형 리스트형 Gitlab에서 CI-CD 자동화 하기 배포용 서버에 도커 & 도커 Compose 설치MSA 서버마다 이미지를 만들수 있게 도커파일을 각각 작성도커 Compose를 이용해서 MSA 이미지를 동시에 실행가능유레카 서버가 먼저 실행되기까지 기다리기위한 헬스체크를 도커 Compose 파일에 설정여기까지 완료하면 docker-compose up -d 명령어로 하나로 수동 배포가 가능CI-CD 자동화를 위해 .gitlab-ci.yml을 실행시켜줄 서버가 필요 (현재 실행중)새로운 서버에 Gitlab-runner를 설치 (현재 공유 러너가 설치됐으므로 설치할 필요없음)프로젝트 루트 폴더에 .gitlab-ci.yml을 작성main 브랜치에 푸쉬됐을때 동작하도록 트리거를 yml에 설정트리거되면 yml 파일에서 MSA 서버 각각 새롭게 도커 이미지를 생성하고.. Kafka(카프카) Event Streaming platform 고성능 데이터 파이프라인 구축에 활용된다 처음에는 간단한 서비스는 단방향 통신으로 충분하지만 서비스의 양이 늘어나면 간단한 기능을 위한 파이브라인이 매우 복잡해짐 서비스가 세분화되고 나눠지면서 이 서비스들 사이의 정보 교환을 어떻게 할것인가? (Http로 할수 있으나 거미줄처럼 됨) Apache Kafka 등장발생하는 모든 사건들을 Kafka에 전달사건들에 대해 알아야 하는 서비스가 해당 정보를 구독하고 서비스를 제공한다.Event Driven Architecture (사건이 발생하면 프로세스가 진행됨, 즉 이벤트가 트리거) 개별 서비스의 결합력이 줄어든다.(카프카만 구독하면 되니까)-> 독립적으로 발전할수 있다. RabbitMQ vs Kafka?성능의 .. 최종 프로젝트 회고 (MSA 설계 배경) 웹 크롤링웹크롤링은 Java-selenium 과 Jsoup을 이용하여 구현하였고 또 스프링 스케쥴러를 사용해서 원하는 시간마다 yes24 공연 예매 사이트를 확인하여 새로운 공연정보가 올라올때마다 크롤링을 해서 정보를 추출할수 있었다. 스케쥴러 사용법1) 주기적으로 실행시킬 메서드에 @Scheduled 어노테이션을 붙임@Scheduled(cron = "0 */2 * * * ?") public void createCrawling() 2) 스케쥴러를 사용하기위해 애플리케이션에 @EnableScheduling 어노테이션을 붙여줌@EnableScheduling@SpringBootApplicationpublic class CrawlingApplication { public static void main(St.. 쿠버네티스 로드밸런싱 실험(nGrinder) 쿠버네티스의 성능쿠버네티스를 이용해서 트래픽 변화에 따른 서버의 자동 증설 및 축소가 가능해졌는데 과연 이렇게 늘어난 서버가 정말로 제 역할을 해낼지 궁금해졌다. 만약 서버 증설을 성공하더라도 로드밸런서가 잘 작동되지 않는다고 가정하면(병목현상 등) n개의 서버를 증설한다고해도 성능은 n배가 되지 않을것이기 때문이다. 그래서 nGrinder라는 테스트 툴을 이용해서 서버가 증설될때 과연 요청 처리 속도가 얼마나 빨라지고 시간당 트랜잭션이 얼만큼 증가하는지 실험해보고자 한다. nGrindernGrinder는 내 로컬에서 도커로 쉽게 설치가 가능하고 실험하고싶은 API URL과 실험하고자하는 시나리오(script)를 자바와 유사한 Groovy로 작성하면 가상 사용자수가 몇명일때 처리되는 요청을 분석할수 있다.. 최종 프로젝트 회고 (스프링 @Asysc, 비동기 방식) 이제는 알람서버로 분리된 기능이고 최종 프로젝트의 핵심 기능인 알람 기능의 동작 방식에 대해서 포스팅 하겠습니다.팀원분이 공부하고 작성했던 내용을 바탕으로 최종 프로젝트에서 RabbitMQ를 적용하여 알람서버로 분리하는 과정을 추가해서 정리해 보겠습니다. 구독한 이용자에게 공연 정보를 Jakarta Mail로 이메일을 보내게 되는 상황에서 동기방식으로 알람을 보내게 되면 모든 알람을 보낼때까지 프로세스가 기다리기 때문에 그때 동안 다른 요청을 처리하지 못하게돼서 성능저하에 이어지게 됩니다.그래서 이에 대한 해결방법으로 스프링 비동기 방식을 사용할수 있습니다. 핵심은 모든 알람이 전달될때까지 기다리는게 아니라 각각의 알람들은 쓰레드들이 잡고서 해결하고 공연 업로드는 알람처리와 상관없이 업로드돼야 하는것입니.. Techit Java Backend School 8기 수료(우수상) 후기 멋쟁이 사자처럼 자바 백엔드 스쿨 8기 후기를 작성해보려고 한다.먼저 우리팀의 공연 알람 서비스(스테이지 알람)은 1차 프로젝트에서 우수상을 받았고 2차 프로젝트를 고도화 하기로 선택하면서 모든팀중에서 유일하게 팀원 변경없이 그대로 2차 프로젝트를 하는 고도화 팀이였다.1차 프로젝트를 우승도 했겠다 워낙에 팀케미가 잘맞았기 때문에 아무 걱정없이 2차 프로젝트를 시작할 준비를 하고 있었는데 갑자기 1차 팀장님이 취업을 했다는 소식이 전해졌고 잠시동안 팀 전체로 멘붕에 빠져버렸다. 그냥 팀원도 아니고 전 팀장이 나간다 하시니 힘이 빠지고 아쉬움에 집중이 잘되지가 않았다. 이런 감정과 분위기로는 몰입하기가 어려워서 나는마음가짐을 다잡기위해 용기를 내서 팀원들에게 2차 프로젝트 팀장을 하겠다고 전했고 팀원들도 .. 쿠버네티스(k8s) 기본 원리 Load Balancing, Service Discovery웹 서비스는 얼마만큼의 컴퓨터 자원이 필요한지 사전에 알기 어렵다Scale Up을 진행하기 어렵다Load Balancing과 Service Discovery가 중요한 이유 무중단 배포웹 서비스는 사용자가 언제든지 접속하고 있을수 있다접속 중에 업데이트를 진행하면 서비스가 중단될수도 있다. 어떻게 하면 사용자의 서비스 중단 없이 업데이트를 진행할 것인가? 쿠버네티스의 등장Container Orchestration도커의 컨테이너는 애플리케이션 배포에 인프라에 대한 고민을 많이 줄여주었다다양한 서버에 배포하면서 환경을 일정하게 유지할수 있으며상대적으로 가볍기 때문에 빠르게 전달하고 실행할수 있다이 컨테이너의 배포, 확장, 관리를 자동화 하는 것을 Co.. RabbitMQ Message Broker서비스가 발전하면서 기능이 많아지면 하나의 서버에서 모든것을 처리하지 않는 방향을 생각해 볼수있다.인증만 담당하는 서버를 따로 만들거나서비스 사용 이력을 검색 가능한 형태로 기록하거나채팅만 담당하거나크롤링이나 알림 메시지 보내는것만 담당하는 등이럴경우 서로 상호 소통을 해야하는 상황이 발생함 -> 서버 분리 Http(동기식 통신)를 사용할때의 단점요청을 보낸후 응답이 올때까지 서버의 수행이 중단(해당 서버가 죽으면 보낸 요청은 불확실해짐)여러 서버에 동시에 정보를 전달하기 번거로움어떤 특정 서버를 지정해서 요청을 보내야 하기 때문에 결합성 증가 대신 Message Broker(비동기)라는 소프트웨어(미들웨어)를 사용해 메세지의 전달을 위임할수 있다.서버는 메세지를 Message.. 이전 1 2 3 4 5 6 7 ··· 22 다음