웹 프로그래밍/스프링 (33) 썸네일형 리스트형 도커 사설 레포지토리 구축 도커 허브는 퍼블릭이라서 정보가 노출돼있는데 나만의 사설 도커 허브를 쓰고 싶으면 도커 레지스트리를 쓰면된다. 내 사설 서버에 도커 registry 실행하면서 SSL 인증서 등록 /certs는 인증서 디렉토리server.crt와 server.key 파일이 있어야 함 (SSL 인증에서 필요)docker run -itd --name=myreg -v ~/certs:/certs \-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \-e REGISTRY_HTTP_TLS_KEY=/certs/server.key -p 5000:5000 registry 클라이언트 서버에도 동일한 파일이 적용 돼야함 (그래야 SSL .. SSL/TLS 보안의 원리 SSL/TLS 방식은 퍼블릭 키와 프라이빗 키를 사용하기때문에 너무 헷갈렸는데 이참에 정리하려고 한다.일반적으로 우리가 생각하는 암호화 방식은 대칭 암호화 방식이라서 비대칭 방식이 잘 이해가 안됐던것 같다. SSL/TLS는 비대칭 암호화와 대칭 암호화 전략을 둘다 씀비대칭 암호화 퍼블릭 키로 암호화된 데이터는 프라이빗 키로만 복호화할 수 있다.프라이빗 키로 암호화된 데이터는 퍼블릭 키로만 복호화할 수 있다.퍼블릭 키로 암호화된 데이터는 해당 프라이빗 키로만 복호화할 수 있음. 주로 세션 키를 안전하게 교환하기 위해 사용됨대칭 암호화하나의 세션 키를 사용하는 암호화 방식입니다. 동일한 키로 암호화와 복호화를 수행. 실제 데이터 전송시 사용 비대칭 암호화와 대칭 암호화의 원리를 이해하기만 하면 SSL .. 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 서버 각각 새롭게 도커 이미지를 생성하고.. 최종 프로젝트 회고 (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.. 이전 1 2 3 4 5 다음