IT 시사 및 CS 지식 56

Spring Batch - (2)Spring Batch의 필요성과 장점

그냥 Spring이나 java를 사용하면 대용량 데이터 처리를 못해? chunk의 개념을 그냥 java로 구현해서 사용하면 되는거아니야? 왜 굳이 Spring Batch를 써야돼? 이 글을 보는 사람들은 다들 경험해봤듯이, Spring이나 Java를 사용하여 데이터 처리를 할 수는 있다. 그리고 대용량 데이터 처리라고 해봐야 그냥 데이터 처리를 많이 하면 되는거 아닌가? 또, Spring Batch하면 빼놓을 수 없는 "Chunk" 개념을 직접 Java로 구현하여 사용할 수도 있다. 그렇다면 왜 굳이 Spring Batch를 사용해야 할까??? Spring Batch를 사용하는 이유 1. 표준화된 아키텍처와 모범 사례 Spring Batch는 대규모 배치 처리에 필요한 아키텍처와 모범 사례를 제공함. 이..

Spring Batch - (1)스프링 배치란?

최근에 회사에서 난생 처음으로 배치 개발을 해보게 되어서 공부하게 된 내용 + 공부할 내용 + @를 쓸 예정이다 ㅎㅎㅎ 스프링 배치라는 것이 있다는 것은 알고 있었는데(그냥 대용량 데이터 처리를 할 때 쓴다는 것만 알고 있었음) 내가 직접 해보게 될 줄은 몰랐당 해보라고 했을 때는 좀 무서웠지만 막상 해보니 재미도 있고 원래 하던 개발이랑은 좀 색다른 맛이 있어서 아주 좋은 경험이였음! 뭔가 촤라라락 척척척 촤촤촥 되는 느낌? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 해본 사람이라면 알 수도 모를 수도 있는 말이지 않을까 싶네여 Spring Batch란? 스프링 배치(Spring Batch)는 대용량의 데이터를 처리하고, 반복적으로 수행되는 일괄 처리 작업을 지원하는 오픈 소스 프레임워크임. 스프링 배치는 일괄 처리 작..

SVN - (4)개발을 혼자서 할 수 없는 이유

물론 개발은 혼자서 할 수 있다. 하지만 어렵다. 1인이 서비스를 만들 수 있다. 하지만 그 서비스는 본인만 사용하는 서비스인가? 아니잖아 결국 서비스가 잘 되고 덩치가 커지면 많은 사람들이 필요해진다. 내가 생각하는 개발을 혼자서 할 수 없는 이유는 다음과 같다. 개발을 혼자서 할 수 없는 이유 1. 복잡성과 다양성 현대 소프트웨어 개발은 매우 복잡하고 다양한 기술과 도구들이 사용된다. 배포만 봐도 요즘은 기본적으로 무중단 배포를 선호한다. 그렇다면 무중단 배포를 위한 로드밸런서 뭐 Nginx. 가상화, 컨테이너 기술에 Docker랑 Kubernetes. CI/CD를 위한 Jenkins나 GitHub Action. 그리고 모니터링을 위한 도구(이건 안써봐서 뭐가 있는지 모르겠음요). 당장 생각나는 것만..

SVN - (3)SVN 사용법

SVN은 다른 VCS(버전 관리 시스템)처럼 GUI와 CLI 모두로 사용이 가능함. 어차피 GUI로 쓰나 CLI로 쓰나 겹치는, 알아야 하는 사용법이 있음. 둘 다 간단하게 알아보고, 중요한 사용법들을 알아보는 방향으로 갈게여 GUI로 사용하는 방법 SVN의 GUI 툴은 여러가지가 있다고 하지만, 지금 간단하게 알아볼 툴은 TortoiseSVN임. 입사 후 막 나는 이클립스에서 SVN을 사용하고 있었는데 이걸 사용하는 사람도 있더라구? 근데 첨에는 그냥 window XP 시절 그냥 파일 탐색기 같이 생겨서 그게 SVN GUI 툴인지 몰랐음 ㅋㅋㅋㅋㅋ 첫인상이 좀 구려보여서 아직 사용은 안해봤음 ㅎㅎ 그리고 내가 알기론 Tortoise가 육지거북이란 뜻인가 그럴거임. 그래서 TortoiseSVN를 보면 귀..

SVN - (2)SVN의 역사

CVS란 CVS(Concurrent Versions System)는 1980년대 후반부터 사용되어온 VCS 중 하나였고, CVS는 클라이언트-서버 구조로 이루어져 있음. 클라이언트는 서버로부터 완전한 복사본을 얻을 수 있음. 그러나 CVS는 분산형 버전 관리 시스템이 아닌 중앙 집중형 버전 관리 시스템이기 때문에 대규모 프로젝트에서는 한계가 있었음. SVN의 특징 SVN은 위에서 간단하게 설명한 CVS의 한계를 극복하고자 만들어졌다고 함. SVN(Subversion)은 2000년대 초에 개발되어, CVS를 대체하기 위해 만들어진 VCS임. SVN은 CVS와 비슷한 기능을 제공하면서도, 복잡한 코드 변경을 처리할 수 있는 새로운 방식을 도입하여 대규모 프로젝트에서 더욱 효과적으로 사용될 수 있었음. 방금 ..

SVN - (1)SVN이란?

들어가기 전에 입사를 하고 SVN이란 친구를 처음 알게 되었음. 얘기는 들어봤는데 "이걸 설마 내가 쓸 일은 없겠지,,," 라고 생각해왔던 것 같다,,, 뭐든지 언제나 갑자기 찾아오는 법! 회사에서는 배포하고 하느라 몇번 어깨너머로 보고 똑같이 사용은 해보다가 최근에 SVN에 대해 찾아보고 알아보게 되어서 정리하는 겸해서 글을 올리게 되었다 ! SVN 시리즈에 대해서 일단 아는대로 정리해서 써나갈 생각임 SVN이란? SVN은 Subversion의 약자임. 이 SVN은 버전 관리 시스템(VCS, Version Control System) 중 하나임. VCS는 발자나 프로젝트 팀이 파일 및 코드의 변경 내용을 추적하고 관리할 수 있도록 도와주는 소프트웨어 도구임. SVN은 Apache Software Fou..

CDN Purge란?

여느 때와 같이 회사에서 숨을 쉬고 있을 때였다. 회사 메신저 배포방에서 'purge 완료했습니다.' 라는 메세지를 봤는데, 그걸 처음 봤을 때는 '아 SVN에서는 merge를 purge라고도 부르나? 오타인가? 아니면 뭐 다른 SVN 용어인가?' 싶었다. 그냥 그런가보다 ~ 하고 넘어갈려다가 궁금해서 구글링을 해봤는데 'purge'라고 검색해도 잘 안나오고, 'SVN purge'라고 검색해도 잘 안나왔다. 그래서 인프라팀에서 하는 이야기를 귀만 쫑긋해서 들어봤는데 아카마이 어쩌고 퍼지 어쩌고 하는 것을 듣고 'purge가 아카마이의 purge구나'하고 알아차렸다 !!! Purge란? Purge는 아카마이에만 있는 것은 아니고 CDN에 있는 것이다. 그럼 CDN은 뭔데? https://seokmimmmm..

CPU 캐시 메모리란?

앞서서 CDN이 뭔지, 캐시가 뭔지 알아봤음 ! CDN의 캐시 서버의 캐시, 미리 복사해서 저장해놓는다는 의미의 기술적 용어인 캐시 !\ 우리가 쓰는 CPU에도 캐시 메모리라는 캐싱을 맡은 친구가 있음 !!! CPU 캐시 메모리라는 애임 CPU 캐시 메모리란? CPU 캐시 메모리란 CPU 안에 장착된 고성능 메모리임. 메모리라하면 컴퓨터의 메모리인 램(RAM)이 생각나는데 지금 이야기해볼 캐시 메모리는 이 램과도 관련이 있음 ! 이 그림은 메모리 계층 구조를 나타낸 그림임. 보면 중간에 캐시 메모리가 껴있는 것을 확인할 수 있음 ! 또, 왼쪽을 보면 저번에 설명했던 것처럼 캐시라는 것은 더 빠르게 접근 가능함. 근데 오른쪽을 보면 저장 공간이 램보다 더 적은 것을 알 수 있음. 캐시 메모리는 메인 메모리..

캐시(Cache)란?

CDN이 무엇인지 설명하기 전에 이 Cache가 무엇인지를 먼저 설명했어야 했는데 순서가 바뀌어 버렸다,,, ㅎㅎㅎ 암튼 이건 CDN에 관한 글 https://seokmimmmmmmmm.tistory.com/215 CDN(Content Delivery Network)이란? (feat. Akamai) 지금 다니는 회사에 입사하고 얼마 지나지 않아서 앉아서 졸음 참기를 하는 중이였다,,, 옆자리 뒷자리에서 뭐시기뭐시기 아카마이 어쩌고 ~ 하는걸 들었는데 손가락이라도 움직여야 졸음과의 seokmimmmmmmmm.tistory.com 이 글을 보면 캐싱을 사용해서 CDN 서비스를 제공한다는 것을 알 수 있다. 그래서 캐시가 뭔데??? 캐시(Cache) 캐시(Cache)란 프랑스어로 '숨기다'라는 단어인 cach..

CDN(Content Delivery Network)이란? (feat. Akamai)

지금 다니는 회사에 입사하고 얼마 지나지 않아서 앉아서 졸음 참기를 하는 중이였다,,, 옆자리 뒷자리에서 뭐시기뭐시기 아카마이 어쩌고 ~ 하는걸 들었는데 손가락이라도 움직여야 졸음과의 싸움을 이길 수 있을 것 같아서 아카마이가 뭔지 구글링해봤다 ㅎㅎㅎ Akamai란? 아카마이란 그냥 CDN 서비스를 제공하는 회사이다. (Amazon의 Cloud Front라는 CDN 서비스도 존재한다) CDN,,, 많이 들어본 것 같은데 뭐지?? 하고 생각을 해봤는데 분명히 네트워크 수업에서 들었던 기억이 난다. 학교 다닐 때는 뭐,, 워낙 수업을 안들어서 그게 뭔지는 모르지만 들었본 것 같은데 ! 하는 것들은 엄청 많다 그래서 CDN이 뭔데 CDN(Content Delivery Network)이란? CDN이란 Conte..

[CS스터디]220805 보안 - 2

JWT에 대해서 간단히 설명해주세요. JWT는 Json Web Token으로 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. 주로 회원 인증이나 정보 전달에 사용된다. 애플리케이션이 실행될 때, JWT를 static 변수와 로컬 스토리지에 저장하게 된다. static 변수에 저장되는 이유는 HTTP 통신을 할 때마다 JWT를 HTTP 헤더에 담아서 보내야 하는데, 이를 로컬 스토리지에서 계속 불러오면 오버헤드가 발생하기 때문이다. 클라이언트에서 JWT를 포함해 요청을 보내면 서버는 허가된 JWT인지를 검사한다. 또한 로그아웃을 할 경우 로컬 스토리지에 저장된..

[CS스터디]220804 보안 - 1

양방향 암호화, 단방향 암호화에 대해서 설명해주세요. 양방향 암호화 알고리즘 암호화된 암호문을 복호화할 수 있는 알고리즘 암호화, 복호화 가능 대표적으로 대칭키(비공개키) 방식과 비대칭키(공개키) 방식으로 나뉘어 짐 단방향 암호화 알고리즘 암호화는 수행하지만 절대로 복호화가 불가능한 알고리즘 암호화 가능, 복호화 불가 대표적으로 Hash 방식이 있음 데이터 무결성을 검증할 때 자주 쓴다고 함 대칭키 암호화, 비대칭키(공개키) 암호화에 대해 설명해주세요. 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말함. 비대칭키 암호화 방식은 암복호화에 사용하는 키가 서로 다른 암호화 방식을 말함. 공개키 암호화라고도 한다. 따라서 비대칭키 암호화에서는 송수신자 모두 한쌍의 키(개인키, 공개키)를..

[CS스터디]220802 운영체제 - 6

프로세스 관련 용어를 설명해보세요. (알아만 둡시다.) PCB(Process Control Block) 운영체제가 프로세스를 제어하기 위해 정보를 저장해놓는 곳. 프로세스의 상태 정보를 저장하는 구조체 프로세스 상태 관리와 문맥 교환(Context Switching)을 위해 필요하다. PCB는 프로스세 생성 시 만들어지며 주기억장치에 유지된다. 운영체제라는 것은 결국 하드웨어가 효율적으로 동작할 수 있도록 관리해주는 소프트웨어 프로그램임. 그니까 운영체제라는 프로그램이 프로세스를 하나 만들어서 실행을 하려면 그 프로세스와 관련된 데이터 구조가 있어야 하고, 그 것이 바로 PCB임! PC(Program Counter) 프로세스 내부에 있는 레지스터 중의 하나 중앙처리장치 내부에 포함된 레지스터 중에 하나로..

[CS스터디]220728 운영체제 - 5

가상 메모리(Virtual Memory System)에 대해 설명해보세요. 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안되었음 메모리를 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다. 이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치(RAM)보다 큰 메모리 영역을 제공하는 방법으로 사용된다. 이 가상 메모리의 핵심은 필요한 부분만 메모리에 적재(부분적재)하는 것! 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올림(적재 여부를 페이지 테이블에 표시) 세마포어와 뮤텍스의 차이에 대해 설명해보세요. 세마포..

[CS스터디]220726 운영체제 - 4

교착 상태가 무엇인지 설명해주세요. 다중 프로그래밍 환경에서 여러 프로세스가 제한된 resource 를 두고 경쟁하는 경우 발생하고 프로세스가 결코 일어날 수 없는 특정 이벤트를 무한정으로 기다리는 상태 교착 상태에서 기아 상태의 해결 방법에 대해 설명해보세요. 교착 상태 교착 상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생 기아 상태 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미함 프로세스가 작업을 수행하지 못하고 무한히 기다리는 상태 현실적으로 수행할 수 있는 작업이지만, 무기한 연기로 인해 수행할 수 없는 상태에 빠지는 것. 프로세스의 우선순위에 따라 자원을 할당할 경우, 우선순위가 낮은 프로세스들은 기아 ..

[CS스터디]220725 운영체제 - 3

Thread-safe 하다는 의미와 설계하는 법을 설명해보세요. Thread-safe란? 위키에서 Thread-Safe는 스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다. 라고 나와있다. 앞선 스터디에서 알게 되었듯이 스레드는 프로세스와 다르게 하나의 프로세스 안에서 여러 스레드가 같은 자원에 접근할 수 있고, 그 자원을 공유하며 작업(Ta..

[CS스터디]220722 운영체제 - 2

동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요. 동기 Synchronous 순차적, 직렬적으로 작업(task)을 수행 어떤 작업이 수행 중이면 다음 작업은 그 작업이 끝날 때까지 대기해야 함! 요청에 대한 결과가 동시에 일어남! 장점 설계가 매우 간단하고 직관적 단점 결과가 주어질 때까지 아무것도 못하고 대기해야 함 비동기 Asynchronous 병렬적으로 작업(task)를 수행 요청을 한 후 응답을 기다리지 않고 바로 다음 작업을 수행 요청에 대한 결과가 나중에 일어난다 ! 장점 요청에 따른 결과가 반환되는 시간동안 다른 작업 수행 가능 단점 동기식보다 설계가 복잡함 멀티스레드 프로그래밍에 대해 설명해보세요. 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것 CP..

[CS스터디]220718 운영체제 - 1

프로세스와 스레드의 차이를 설명해보세요. Process(프로세스) 컴퓨터에서 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스끼리는 자원을 공유할 수 없음 Thread(스레드) 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유함 자원을 공유할 수 있음 컨텍스트 스위칭에 대해 설명해보세요. CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다. 구체적으로, 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면..

[CS스터디]220707 자료구조 - 3

BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요. 한쪽으로 몰리는 경우(계속해서 작은 수가 들어오는 경우, 계속해서 큰 수가 들어오는 경우)가 최악의 경우 평균적으로는 O(logN)인 시간 복잡도가 이 경우엔 O(N)으로 증가함! 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요. 재귀 or 동적 계획법(탑다운, 바텀업 방식이 있음) 재귀 단순한 재귀로 구현할 경우, 시간 복잡도가 너무 크게 나올 수 있기 때문에 동적 계획법을 활용하여 구현하는게 좋음 ! 동적 계획법 Top-Down 말 그대로 위에서 아래로 진행하면서 답을 구하는 방식, 흔히 재귀 호출을 이용해 구현. 100번째 피보나치 수를 찾기 위해 99번째, 98번째 수를 찾고, 그들을 찾기 위해 97번쨰, 96번째 수를 찾는..

[CS스터디]220705 자료구조 - 2

Stack, Queue에 대해서 설명해주세요. Stack LIFO(Last In First Out, 후입선출) push(), pop() 활용 예시 웹 브라우저 방문 기록 역순 문자열 만들기 실행 취소 후위 표기법 수식의 괄호 검사 등 Queue FIFO(First In First Out, 선입선출) offer(), poll() 활용 예시 우선순위가 같은 작업 예약(프린터의 인쇄 대기열) 은행 업무 콜센터 고객 대기시간 프로세스 관리 등 Heap, Priority Queue에 대해서 설명해주세요. Heap 완전 이진 트리(Complete Binary Tree)로 구성된 자료구조 모든 노드에 저장된 값들은 자식 노드들의 것보다 크거나 같다. 부모는 자식보다 항상 우선순위가 높다 그렇기 때문에 루트 노드가 항..