버전 관리 시스템 개념(Version Control System) 버전 관리 시스템(Version Control System, VCS)은 파일의 변경 이력을 저장하고, 여러 사용자가 동시에 작업 및 협업할 수 있도록 돕는 소프트웨어 도구입니다. 주로 소프트웨어 개발 프로젝트에서 코드 변경을 추적하고, 개발자들이 이전 버전으로 되돌릴 수 있게 해줍니다. 버전 관리 시스템의 주요 유형 중앙집중식 버전 관리 시스템(Centralized Version Control System, CVCS) - 중앙 서버에서 저장소를 관리하고, 개발자들이 서버와 통신하여 코드 변경 내역을 저장하고 업데이트합니다. 이 방식의 대표적인 예로는 Subversion(SVN)이 있습니다. 분산 버전 관리 시스템(Distributed Ve..
리눅스(Linux)에서 어플리케이션을 돌려야 될 경우, 크론탭을 알아야 되는 건 필수라 할 수 있다. 크론탭은 특정 시간에 특정 작업을 할 수 있게 도와주는 기능으로 Web의 경우 크론탭(ex: spring scheduler)이 내장되어 있는 경우가 있어서 몰라도 상관 없지만, 어플리케이션은 프로세스가 종료되기 때문에 OS에서 이 기능을 해줘야 한다. 크론탭의 기본 기능 크론탭 리스트 crontab -l 크론탭으로 만든 스케쥴들을 출력한다. 마치 cat으로 텍스트 내용을 출력하는 것과 유사한 모습이다. 크론탭 작성 crontab -e 위와 같은 명령어를 한 경우 vi 편집기같은 화면이 뜨게 된다. 스케쥴링을 작성 한 후 vi 편집기처럼 ESC -> 콜론(:) -> wq를 누르면 저장이 된다. 만약 입력한..
내가 혹시 누군가에게 불필요한 감정을 낭비했는지를 곰곰히 생각해볼 필요가 있다. 분명 아니라곤 말을 못하겠다 속상한 마음에 말을 하지만, 굳이 그 언어로 표현할 필요는 없을텐데 말이다. 최근 들어 MZ 세대를 이해하고자 책도 사서 보지만, 문득 이런 생각이 들었다. 내가 MZ 세대에 맞춰서 바꾼 다는 것은 우리 세대의 행동이 모두 잘못됐다는 것 아닌가? 우리 세대의 문제점도 있겠지만 내가 볼때 MZ 세대의 문제점도 명확해서 누가 옳고 그르다라고 판단하는 것은 위험해보였다. 결국 서로간의 차이를 인정하고, "감정 소모를 최대한으로 줄이자"라는 결론이 내렸고 검색을 하니 "기린 대화법"이라는 것이 있어서 가져와봤다. 기린 대화법 = 비폭력 대화법 미국의 심리학자 마셜 로젠버그 박사가 35년 전에 제안한’ 비..
마이크로서비스 혹은 마이크로서비스 아키텍처는 크게 2가지의 목표를 가지고 일체형 서비스를 작은 컴포넌트화 시키는 것이다. 빠르게 개발하고 지속적으로 배포한다 -> Agile의 개념 쉽게 Scaling 할 수 있어야 한다 사실 마이크로 서비스는 현대에 들어서 애자일(Agile)이 뜨고, 가상화 및 클라우드 시스템의 등장으로 잦은 배포와 거대한 서버를 소형 서버로 쪼갤 수 있으므로 개발의 효율을 극대화하기 위해서 등장했다. python의 경우 djang과 flusk로 api를 쉽게 띄우며, spring의 경우 마이크로 아키텍처와 함께 스프링부트가 뜨면서 대형 프로젝트를 제외하면 대세가 되어가고 있다. 예를 들어, 어떤 거대한 웹사이트가 하나의 웹서비스(Monolithic Architecture, 모노리식 아..
버전관리(Version Control) 우리가 무엇인가 작업을 했는데 잘못된 길로 가버려서 다시 돌아가고 싶을 때 혹은 협업으로 인해서 프로그램이 엉망진창 꼬일 경우가 있다. 이런 것들을 관리해주는 프로그램을 버전관리(혹은 소스관리) 프로그램이라고 하며, 아직도 SI쪽에서 많이 사용되는 SVN과 최근에 오픈소스의 트렌드를 만들어 준 깃(Git)이 존재한다. 버전관리는 내가 어떠한 작업 내역을 버전관리 툴에 올리고, 해당 작업에 대해서 버전을 기록한다. 이렇게 협업으로 작업하다가 만약 프로젝트가 꼬이거나 잘못된 방향으로 개발을 할 경우 특정 버전을 지정하여 되돌아 갈 수 있다. 사실 사용하기 편리한 버전관리 프로그램을 고르자면 SVN이라 할 수 있고 매우 적은 지식만으로 SVN을 사용하는데 전혀 지장이 없..
톰캣 구동 중, catalina.out을 삭제해버린다면 톰캣을 재구동하지 않는 이상 catalina.out을 다시 만들지 않는다. 한마디로 핸들링하는 녀석을 우리가 강제로 치워버리는 것과 같다. 이럴 경우, 아래와 같은 명령어로 삭제를 하면 파일 사이즈가 0으로 로그가 재생성하게 된다. cd {톰캣설치폴더}/logs cat /dev/null > catalina.out 근데 cat /dev/null은 정확히 말해서 파일의 값을 0으로 바꾸어주는 것이며, 마치 db에서 delete와 drop하는 것의 차이점이라고 생각하면 편할 것 같다. DB에서 delete를 하게 되면 커서가 마지막 삭제 위치로 이동하게 되는데 cat /dev/null도 파일 사이즈는 0이지만 프로세스를 내리지 않는 이상 물리적인 공간은 ..
Maven으로 프로젝트를 만들게 되면, 기본적으로 Java 버전이 1.5를 사용하게 된다. 현재 카프카를 테스트 하기 위해 만들어진 임시적인 Maven 프로젝트를 기준으로 설명을 하게 되면... 현재 Pom.xml 4.0.0 kafka test 0.0.1-SNAPSHOT kafka-test jar http://maven.apache.org org.apache.kafka kafka-clients 2.6.0 이와같이 Pom.xml에는 그 어디에도 Java를 지정한 곳이 없다. 이건 아무래도 IDE에 따라 다를거라 판단되는데 필자가 사용한 Eclipse 혹은 전자정부프레임워크(이놈도 사실 eclipse)에서 maven java project를 생성 후 simple모드를 할 경우 java 버전을 별도로 설정하지..
여러명이서 사이트를 구축할 때, 공공기관 프로젝트가 아닐 경우 일반적으로 표준화를 하는데 인력 소모를 꽤 하게 된다. 이러한 불편함을 줄이기 위함과 코드의 통일화를 위해 행자부(행정자치부)에서 용어를 통일하여 배포해주었다. http://www.mogaha.go.kr/frt/sub/a06/b04/gid101/screen.do 이 문서를 사용하니, 네이버 검색하는 빈도수가 확 줄어들었다.(네이버 사전 빠이~)왠만한 코드명은 다 검색이 되고, 오히려 이 코드표를 보면서, 컬럼명을 변경하는 일도 발생하였다. 단점이라고 하면, 너무 많은 단어가 등록이 되어 있다보니, 더 줄이고 싶은데 다른 코드의 존재로 인해서줄이지 못하는 케이스가 존재한다. 공공기관에서 프로젝트를 하는 것이 아니라면, 위 문서를 참고하여, 별도..
전자정부 프레임워크를 설치 및 세팅하기 전에 간단히 프레임워크에 대해서 설명을 하자면,프레임워크(Framework)란 영어로 뼈대, 골격이라는 뜻이 있다.어떠한 동물을 그릴려고 하는데, 처음부터 그림을 그리는 것이 편할 것인지...뼈대를 이미 제공한 상태에서 해당 뼈대 위에 그림을 그리는 것이 편할지는 누구한테 물어봐도 후자라고 말할 것이다 물론, 이 좋은 프레임워크에도 장단점이 존재한다. 1. 장점이미 많은 기능들을 제공하고 있다.많은 개발자들이 동일한 방식으로 개발을 수행하게 된다2. 단점꽤 많은 리소스를 잡아 먹는다.개발의 자율성이 떨어진다. 위와 같은 장단점외에도 많은 특징들이 존재하지만, 대표적으로 몇개 적어보았다.그 중에서 전자정부 프레임워크는 국가에서 만든 프레임워크이다. 공공기관을 중심으로..
시스템 아키텍처 문서를 작성하면서, 전자정부 프레임워크에 대해서도 문서를 작성하게 되었다.(고객의 교육 요청) 해당 문서는 전자정부프레임워크 사이트http://www.egovframe.go.kr를 참조하여 만들었으며, 거의 내용이 동일하다. 1.1. 전자정부 표준프레임워크 아키텍처전자정부표준프레임워크는 전자정부법 및 관련 법률을 근거하여 구축되었으며 본 프로젝트는 표준프레임워크 및 프레임워크가 제공하는 기술기반을(기술적용계획표) 따른다. 전자정보 표준프레임워크 각 구성요소 기능 및 역할은 아래와 같다. 1.2. 전자정부 표준프레임워크의 주요 특징 실행환경 경량화 : 하나의 파일로 일괄 배포 및 설치되던 실행환경을 필수적 부분과 선택적 부분으로 나누어 배포하여 각 사업에 적합한 최적의 실행환경 구성- 실행..