본문 바로가기

반응형

개발

(48)
나의 오픈소스 개발 일기 - 1 자바 프로젝트 Loom에서 가상 쓰레드가 등장 기존의 쓰레딩 모델과 달리 이 쓰레드는 운영체제 쓰레드와 1:1 매핑되지 않음 여러 쓰레드를 띄우고 스위칭하는게 가능해짐 하지만 스위칭 시 sync 블록으로 락을 잡으면 스위칭되지 않는 문제가 발생 즉 이번 이슈는 명시적 락을 이용해 sync 블록을 벗겨내는게 주요 작업 ReentrantLock을 선언하고, sync 블록 앞뒤로 lock, unlock을 호출하는 간단한 이슈 하지만 진행하면서 2가지 문제가 있었다. First, 특정 자원에 sync가 걸린 경우 특정 자원의 상태값을 변경할때 동시성 제어가 필요해서 아래 2가지 방법을 사용했다. synchronized (array) {…} 이런 형태인 경우 해당 자원이 ReentrantLock을 extends하..
[WIP] Ncloud 사용 후기 feat. F-Lab 안녕하세요 F-Lab에서 멘티로 과정을 진행중인 @BueVonHun입니다😆. 오늘은 제가 진행한 MSG-Lab 프로젝트에서 NCloud를 활용한 경험을 공유하겠습니다. 이런 분들이 읽으면 좋아요 F-Lab 과정을 진행중인 멘티, 화이팅!! NCloud를 처음 사용해보는 개발자 # 그래서... NCloud는 뭐지..? NCloud는 네이버 클라우드에서 만들고 있는 클라우드 서비스입니다!! AWS와 같은거라고 생각하면 되요! # NCloud 어떤 서비스가 있는데?? 클라우드 컴퓨팅, Pinpoint, RabbitMQ 등의 프로그램, 각종 네트워크 등을 구축할 수 있습니다! # NCloud 어떻게 활용했어? 저는 아래와 같은 서비스를 이용했습니다. 클라우드 컴퓨팅, 네트워크 등의 IaaS Pinpoint, R..
[MSG-Lab] 우테코 따라잡기 1차 답안지 문제지 해설 1. ide 대신 콘솔로 실행하기 인텔리제이로 실행하게 되면, 불필요한 java agent가 함께 실행된다. 콘솔 커맨드로 실행하여 오버헤드를 줄였다. 2. jvm 설정 jvm 메모리 사이즈를 설정하지 않으면, 낮은 수치부터 힙을 살살 늘린다. 힙을 실행시점에 할당하여 오버헤드를 줄였다. Xmx, Xms 둘 다 같은 수치로 설정하면 정적으로 할당한다. 3. jvm warm-up if kakao 2022를 참고했다. 직접 c2의 lv4까지 컴파일된 로그를 확인했다. 처음에는 약 천줄만 c2 lv4였다면, warm-up 이후에는 4천줄가량이 카운팅되었다. 4. tomcat 튜닝 인스턴스에 적합한 tomcat 설정을 찾았다. 쓰레드가 너무 많으면 컨텍스트 스위칭 비용이 커진다. 시작시 쓰레드수가 ..
12월 4주차 BueVonHun's Dev News 비정기적으로 연재하는 컨텐츠입니다.😆 네이버 클라우드 자체 리눅스 개발 및 공개 예정, 2022 서밋 내용 테스트 커버리지 100% 세션에서 뮤테이션 테스팅 툴 소개, 2022 slash 토스 자바 네이티브 메모리 릭세션에서 jit 컴파일러 티어 아키텍쳐임 무려 4가지가 있고, jvm 실행시 서버냐 클라이언트냐 옵션에 따라 다른 jit 컴파일러 사용하다함, 2022 slash 토스 은행 어플 무한스크롤 무지 어려움 이는 계정계와 채널계가 나눠져있기 때문(계정계는 모노리틱 구조), 2022 slash 토스 오픈소스 armeria의 프로젝트 Loom 관련 이슈 하나를 본인이 처리, 뿌듯 자바 프로젝트 Loom 가상 쓰레드와 zgc 매우 유용, java
[MSG] 네이버 클라우드로 인프라 구축하기 - 9, cloud db 여기서는 mysql 서버 사용법만 다룹니다! 단순히 디비 생성만 진행해주시면 바로 사용이 가능합니다. 저는 asg와 동일한 서브넷에 생성했습니다. db 이름, 포트 번호등을 주의해서 생성합니다.(나중에 접속할때 필요합니다.) acg은 생성시 자동으로 새로 생성되고(추가로 설정 해주라는 의미입니다.), url은 생성되면 확인할 수 있습니다.
[MSG] 네이버 클라우드로 인프라 구축하기 - 8, 오토 스케일링 1. launch configuration 설정 스케일링으로 생성될 인스턴스를 설정하는 단계입니다. 운영체제, 컴퓨터 코어 갯수 등을 설정할 수 있습니다. 보통 미리 생성해둔 서버 이미지 + init script 조합으로 운영한다고 합니다. (저도 정적인애들은 미리 서버 이미지로 만들고, jar 파일같은건 init script로 object storage에서 가져옵니다) 2. ASG 생성 여기서는 헬스 체크 유형에서 서버가 아니라 로드 밸런서를 선택해 주셔야 밸런서를 통해 asg로 요청이 뿌려져요. 스케일링 정책을 설정해야 하는데요. 별건 아니고 특정 이벤트가 발생했을때, 인스턴스를 어떻게 증가/감소시킬지 설정하면 됩니다. 그럼 이벤트는 어떻게 설정할까요? 바로 cloud insight를 이용해서 설정해..
[MSG] 네이버 클라우드로 인프라 구축하기 - 7, 로드 밸런서 요청을 asg에 뿌려주기 위한 친구입니다. 타겟 그룹을 먼저 생성하고, 밸런서를 띄워야 합니다.(나중에 타겟 그룹 연결해도 되나..?ㅎㅎ) 1. 그룹 생성 그룹 생성할때는 어디 포트로 요청 흘려줄지를 설정해야합니다. 헬스 체킹은 어떤 포트로 할지도 정해야 하는데요. 요청 흘려주는 포트랑 달라도 된다고 하네요.(저는 같게 했습니다. 어차피 스프링 액츄에이터로..ㅋㅋ) 헬스 체킹이 조금 특이한데요. 무려 임계값 개념이 들어있습니다.(생물 전공에서 배웠던 역치랑 비슷한..ㅋㅋ) 임계 이상일때만 진짜 그런 행동/결과가 발생했다고 생각하는데요. 비정상에서 정상으로 이동할때, 정상에서 비정상 상태로 이동할때 모두 적용됩니다. 정상 상태 := "저는 지금 정상 상태입니다" X 특정 횟수만큼의 응답 이렇게 상태가 정의..
[MSG] 네이버 클라우드로 인프라 구축하기 - 6, source deploy 1. 배포 프로젝트 생성 배포하려는 서버, asg(오토 스케일링 그룹) 등을 설정해야합니다. 2.배포 시나리오 생성 배포 전략(기본, 블루그린), 배포 과정(순차, 동시), 배포 파일(나중에 설정 가능), 배포 전후 실행 스크립트 등을 설정 할 수 있습니다. 주의 사항으로는 배포하려는 인스턴스에 미리 source deploy agent가 설치되어 있어야 합니다. (init script를 이용해서 설치하면 됩니다)
[MSG] 네이버 클라우드로 인프라 구축하기 - 5, object storage 1. 오브젝트 스토리지란 aws의 s3같은 기능을 제공해주는 object storage입니다. 프로젝트에서는 깃허브에 소스 코드를 올리고, 이를 GA(github action)을 통해 ci를 진행합니다. GA에서 테스트와 빌드가 성공하게 되면 jar파일을 zip형태로 압축해서 object storage에 전송합니다. 2. 프로젝트에서 스토리지에서 파일을 가지고 오는 2가지 경우 스토리지의 파일은 2가지 방법으로 클라우드에 전달되는데요. 첫번째 상황은 init script를 통해, 방금 생성된 인스턴스에 어플리케이션을 띄우는 경우입니다. 두번째 상황은 source deploy를 통해 이미 생성되어, 어플리케이션이 실행중인 인스턴스에 새로은 어플리케이션 버전을 배포하는 경우입니다. 3. 사용법 그럼 이제 본..
[MSG] 네이버 클라우드로 인프라 구축하기 - 4, 접근 제어 이미 이전 포스팅에서 언급한 내용이지만, 정말 중요한 내용이라 또 작성합니다. 1. VPC안의 NACL 이걸 설정하지 않으면 bastion server 사용이 불가능합니다. 2. server의 ACG 아주 기본적인 설정이라 인스턴스 띄우기전에 강제하는 절차로 기억합니다. 3. DB서버의 ACG(기존 acg랑 다르게 새로 만들어지는 친구) 이걸 설정하지 않으면 spring 어플리케이션을 띄울때, communication link faile 에러가 발생하면서 강제 종료됩니다. 4. 게이트웨이와 라우터 이걸 설정하지 않으면 프라이빗존에 생성된 인스턴스에서 apt install python 같은 명령어를 사용하지 못합니다.

반응형