전체 글 133

프로세스의 스케줄링

✅ 스케줄링의 개요 프로세스는 생성, 준비, 실행, 대기와 같은 여러 상태를 거치며 작업이 이루어진다. CPU 스케줄러는 이러한 프로세스가 생성된 후, 종료될 때까지 모든 상태 변화를 조정하는 일을 한다. 이때, CPU 스케줄러는 관리의 범주를 나누어 프로세스를 관리한다. [ 고수준 스케줄링 ] 가장 큰 틀에서 이루어지는 CPU 스케줄링으로 장기 스케줄링 또는 작업 스케줄링이라고 한다. 고수준 스케줄링은 시스템 내의 전체 작업 수를 조절하는 것을 말한다. 이 단계에서는 어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정한다. 작업 요청이 오면 스케줄러가 시스템의 상황을 고려하여 작업을 승인할지, 거부할지 결정하여 승인 스케줄링이라고도 부른다. 이를 통해 동시에 실행 가능한 프로세스의 총 개수가 정해진다..

프로세스 제어 블록과 문맥 교환

✅ 프로세스 제어 블록 프로세스를 실행하는데 필요한 중요한 정보를 보관하는 자료 구조로 TCB(Task Control Block)라고도 한다. 모든 프로세스는 고유의 프로세스 제어 블록을 가지며, 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다. 프로세스 제어 블록의 구성과 중요한 요소들은 아래와 같다. 포인터: 준비 상태나 대기 상태는 큐로 운영되는데, 프로세스 제어 블록을 연결하여 큐를 구현할 때 사용한다. 프로세스 상태: 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 프로세스가 현재 어떤 상태에 있는지를 나타낸다. 프로세스 우선순위: 프로세스의 중요도는 각각 다르다. 사용자 프로세스보다 중요도가 큰 커널 프로세스는 우선순위가 높고, 사용자 프로세스끼리 우선순위가 다..

네트워크 주소 변환 - NAT IP

✅ NAT (Network Address Translation) NAT는 사설 네트워크에 속한 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위해 사용합니다. 기술적으로 풀이하자면, 라우터 등의 장비를 사용하여 다수의 사설 IP를 하나의 공인 IP 주소로 변환하는 기술입니다. 주로 기관에서 내부망을 사용하는 PC에 사설 IP를 제공하고, 외부 인터넷에 연결할 때는 공인 IP주소 하나를 같이 사용하는 형태로 운영합니다. 간단히 말해서, 외부망과 내부망을 나눠주는 역할을 하는 것입니다. 여기서 공유기를 통해 연결하는 것을 외부망, 회사에서 제공하는 IP주소를 통해 연결하는 것을 내부망이라고 합니다. 위 그림을 보면 공인 IP는 같으나, 포트 번호를 다르게 할당하여 각 호스트를 구분짓는 구조입니다..

웹훅[Webhook]이란 무엇일까?

✅ Webhook 웹훅은 웹페이지 or 웹앱에서 발생하는 특정 행동(이벤트)들을 커스텀 Callback으로 변환해주는 방법으로 이러한 행동 정보들을 실시간으로 제공하는데 사용됩니다. 보통 REST API로 구축된 웹 서비스는 하나의 요청에 따라 하나의 응답을 제공합니다. 이러한 구조로 인해 특정 이벤트가 발생했는지 조회하려면 서버로의 요청이 선행되어야 합니다. 즉, 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식입니다. 하지만, 웹훅은 서버에서 특정 이벤트가 발생했을 때, 클라이언트를 호출하는 방식으로써 역방향 API라고도 불립니다. 이렇게 서버측에서 클라이언트의 어떤 URL로 데이터를 보낼지 정해놓은 주소를 바로 Callback URL이라고 부릅니다. ✅ Webhook endpoin..

[kt ds] SW Rookie 신입 채용 합격 후기

`21년도 하반기 KT 계열사의 SI업체인 kt ds에 합격했습니다! 중견기업 최종합격 - 입사포기 중소기업 최종면접 - 포기 대기업 채용확정형 교육 최종합격 - 포기 비전공자로 시작해서 지금까지 총 3개의 회사를 넘기고 드디어 최종합격에 성공했습니다. 대기업 SI업체나 삼성전자, 그것도 아니면 자체 서비스가 있는 IT서비스, 솔루션 기업으로 가는 것을 목표로 했는데, 나름 성공한 것 같습니다! 참고로 올해 상반기에는 삼성전자, CJ올넥, LG CNS, 당근마켓, iPortfolio, 브랜디까지 총 6개 면접에서 탈락했습니다..😂 이력서 xx교회 학생부 부회장 `19년도 대학교(공대) 졸업 대학교 교내 춤 동아리 회장단 삼성청년 SW아카데미(SSAFY) 1기 수료 `20년도 하반기 행정안전부 데이터 청년..

후기 2021.09.17

[Spring] 트랜잭션으로 알아보는 스프링 AOP

✅ 트랜잭션 정의 트랜잭션의 기본 개념은 더 이상 쪼갤 수 없는 최소 단위의 작업이다. 앞서 작성했던 TransactionAdvice의 코드를 살펴보면 트랜잭션을 가져올 때 파라미터로 DefaultTransactionDefinition이 있다. DefaultTransactionDefinition이 구현하고 있는 TransactionDefinition 인터페이스는 트랜잭션의 동작방식에 영향을 줄 수 있는 네 가지 속성을 정의하고 있다. [ 트랜잭션 전파 ] 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때, 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 만약, A 트랜잭션이 진행 중인 상태에서 B 트랜잭션이 호출된다면 어떻게 동작할까? B의 코드가 새로운 트랜잭션을 만..

[Spring] 다양한 관점에서 개발하는 스프링의 AOP - 3

✅ AOP란 무엇인가? 지금까지 비즈니스 로직을 담은 UserService에 트랜잭션을 적용해온 과정을 정리해보겠습니다. 1. 트랜잭션 서비스 추상화 문제: UserService가 특정 트랜잭션 기술에 종속된 코드가 돼버림 트랜잭션 적용이라는 추상적인 작업 내용은 유지하고, 구체적인 구현 방법을 자유롭게 바꿀 수 있도록 서비스 추상화 기법을 적용 인터페이스와 DI를 통해 무엇을 하는지는 남기고, 그것을 어떻게 하는지 분리한 것 PlatformTransactionManager 2. 프록시와 데코레이터 패턴 문제: 여전히 트랜잭션을 적용하는 코드가 비즈니스 로직에 남아있어서 관심사의 분리가 철저하게 이루어지지 않음, 코드 특성상 단순한 추상화와 메서드 추출 방법으로는 분리할 수 없음. 투명한 부가기능 부여를..

[Spring] 다양한 관점에서 개발하는 스프링의 AOP - 2

✅ 스프링의 프록시 팩토리 빈 자바에는 JDK에서 제공하는 다이내믹 프록시 외에도 편리하게 프록시를 만들 수 있도록 지원해주는 다양한 기술이 존재한다. 그 중 스프링의 ProxyFactoryBean은 프록시를 생성해서 빈 오브젝트로 등록하게 해주는 팩토리 빈이다. 기존에 만들었던 TxProxyFactoryBean과 달리, ProxyFactoryBean은 순수하게 프록시를 생성하는 작업만을 담당하고 프록시를 통해 제공해줄 부가기능은 별도의 빈에 둘 수 있다. 또한, ProxyFactoryBean이 생성하는 프록시에서 사용할 부가기능은 MethodInterceptor 인터페이스를 구현해서 만든다. MethodInterceptor의 invoke() 메서드는 ProxyFactoryBean으로부터 타깃 오브젝트에..

[Spring] 다양한 관점에서 개발하는 스프링의 AOP - 1

✅ AOP란? AOP는 스프링의 IoC/DI, PSA와 더불어 3대 요소 중 하나입니다. Aspected Oriented Programming의 약자로 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 기법입니다. AOP를 공부하면서 이론 설명도 많았고, 처음 보는 용어가 많다보니 이해하기 어려웠습니다. 먼저, AOP를 적용함으로써 어떤 효과를 볼 수 있을지, 코드를 얼마나 개선할 수 있을지 확인하며 장점에 대해 알아보겠습니다. 스프링에 적용된 가장 인기있는 AOP의 적용 대상은 선언적 트랜잭션 기능입니다. 앞에서 PSA를 통해 UserService의 트랜잭션 경계설정 기능을 개선했지만, AOP를 이용하여 더욱 깔끔하게 바꿔보겠습니다. 또한, 트랜잭션의 단위테스트, 통합테스트와..

[Spring] 기술의 공통점을 담은 서비스 추상화(PSA)

✅ PSA (Portable Service Abstraction) 이전 포스팅에서 UserDao와 인터페이스인 ConnectionMaker를 통해 IoC/DI를 구현하였습니다. 여기서 인터페이스란, 추상화 기술을 활용한 것으로 각 기술의 공통점을 담아 확장성을 용이하게 해준다는 특징이 있습니다. 이번에 학습할 PSA란, 직역하자면 '일관성있는 서비스 추상화' 입니다. 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것을 의미합니다. PSA를 설명하기 좋은 예시 중 하나인 트랜잭션을 기반으로 상황 설정과 코드를 통해 알아보겠습니다. [ 트랜잭션이란? ] PSA에 대해 학습하기 전, 트랜잭션이란 간단하게 알고 넘어가겠습니다. 트랜잭션이란 더 이상 나눌 수 없는 단위 작업을 ..