본문 바로가기

전체 글36

[Network] 교착상태(Deadlock : 데드락)란? ✅ 교착 상태란? 두 개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업을 끝나기만을 기다리다 둘 다 영원히 끝나지 않는 상황 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 예를 들어, 위와 같이 자동차(프로세스)들이 현재 위치한 길(자원)을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재의 길에서도 벗어나지 못하는 상태를 말함. 📌 교착상태의 발생 조건 4가지 아래의 4가지 조건이 모두 만족 될 경우 발생할 가능성이 있으며, 하나라도 만족하지 않으면 교착상태가 발생하지 않는다. 상호 배제 ( Mutual Exclusion ) 한 번에.. 2023. 4. 6.
[Java] JVM 개념 및 동작 원리 JVM 이란? Java Virtual Machine 의 약자 자바 가상 머신 (가상 컴퓨터, 실제 컴퓨터는 아닌 소프트웨어로 만들어진 컴퓨터) 자바와 운영체제 사이에서 중개자 역할을 수행 자바 바이트 코드를 실행하기 위한 기계 가비지 컬렉터(Garbage Colletor : GC)를 사용한 메모리 관리를 자동으로 수행 레지스터 기반이 아닌 스택 기반으로 동작 한번 작성하면, 어디서든 실행! (Write once, run anywhere) - Sun Microsystems windows용으로 작성 된 애플리케이션은 windows 운영체제에서만 사용가능 만약, Macintosh 운영체제에서 사용 되려면 windows용으로 작성 된 애플리케이션을 macintosh용으로 애플리케이션을 수정해야만 한다. ( 해당.. 2023. 3. 31.
Gradle(그래이들) 개념 및 특징 Gradle(그래이들)이란? 유연성과 성능에 중점을 둔 오픈 소스 빌드 자동화 도구 Groovy Script 를 이용한 Build 자동화 시스템 같은 빌드 도구인 Ant, Maven의 장점을 모아 2012년에 출시 Android OS의 빌드 도구로 채택 간결함 / 빠른 속도 / 유연성 / 확장성 / 다양하고 많은 문서화 등의 장점이 있음 📌 빌드 관리 도구 ( = Gradle / Maven / Ant ) 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구 빌드 되기전 미리 소스 코드를 컴파일, 테스트, 정적분석 등을 하여 실행가능한 앱인지 확인 및 빌드 실행을 해줌 프로젝트의 정보 관리, 테스트 빌드, 배포 등의 작업을 해줌 배포작업 ⇒ 배포가 되는 위치로.. 2023. 3. 29.
Prometheus(프로메테우스) + Grafana(그라파나)로 모니터링하기 Prometheus(프로메테우스) 란? 오픈 소스 기반의 모니터링 시스템이다. 대상 시스템으로 부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템이다. 구조가 간단하여 운영이 쉽고, 강력한 쿼리 기능을 가지고 있다. 또, 그라파나를 통한 시각화를 지원한다. 무엇보다 넓은 오픈 소스 생태계를 기반으로 해서 많은 시스템을 모니터링할 수 있는 다양한 플로그인을 가지고 있다. 특히, 이런 간편함 때문에 쿠버네티스의 메인 모니터링 시스템으로 많이 사용되면서 요즘 특히 더 주목을 받고 있다. ✅ SoundCloud사에서 만든 오픈 소스 기반 모니터링 솔루션 ✅ go언어로 만들어짐 - 하드웨어 레벨 / 애플리케이션 모니터링 가능 - 마이크로서비스 - multiple language 지원(java, g.. 2023. 3. 26.
CORS란? 개념 정리 및 동작 방식 📌 SOP(Same Origin Policy) 정책 동일한 출처에서만 리소스를 공유할 수 있다. 👉 동일한 출처에 대한 정책 동일 출처 서버에 있는 리소스는 자유롭게 가져올 수 있지만, 다른 출처 서버에 있는 이미지나 유튜브 영상 같은 리소스들은 상호작용이 불가능하다. SOP는 2011년, RFC 6454에서 처음 등장한 보안 정책으로 말 그대로 "같은 출처에서만 리소스를 공유할 수 있다" 라는 규칙을 가진 정책이다. ✅ 동일 출처 정책이 필요한 이유? "CSRF 공격!" 만일 제약이 없다면, 해커가 CSRF(Cross-Site Request Forgery) 나 XSS(Cross-Site Scripting)등의 방법을 이용하여 우리가 만든 애플리케이션에서 해커가 심어놓은 코드가 실행되어 개인 정보들을 가.. 2023. 3. 24.
[Infra] GitHub Actions + DockerHub + AWS EC2 로 프로젝트 CI/CD 구축 여러 프로젝트를 만들면서 배포를 할 때 '젠킨스 + Gitlab' 또는 'Gitlab'으로 CI/CD를 구축하여 배포하였다. 이건 프로젝트가 gitlab 저장소로 관리되어있어야 하는데 초반에 만들어둔 프로젝트는 github 저장소에 있다보니 기존 방법 대로 CI/CD를 하려면 gitlab으로 프로젝트를 옮기는 과정이 필요했다. gitlab 👉 github 미러링은 해봤는데 github 👉 gitlab 미러링은 처음... 방법은 비슷하겠거니하고 찾아봤는데 "pull mirroring"을 하면된다고한다.(참고로 깃랩에서 깃헙은 push mirroring) gitlab 미러링으로 들어가 pull로 변경하려고 보니 변경해야하는 Mirror direction이 비활성화되어 클릭이 안되는것... 찾아보니 githu.. 2023. 3. 14.