목록개발 (6)
초보개발자 긍.응.성
SVNSVN은 SubVersion의 단어의 줄임말로 중앙집중관리식 형상관리 소스 툴이다.현재는 형상관리를 위해 대부분 Git을 사용하지만, Git 이전에 사용되었던 툴이 SVN이다.소스 코드를 관리하는 방식이나 히스토리를 관리하는 방법은 다르겠지만, 오래된 소프트웨어의 경우 아직까지 SVN만이 지원되고 있어 간단한 사용 방법에 대해 정리하려한다.사용 방법SVN Client 설치mac의 경우 homebrew를 이용하여 subversion을 설치하자. brew install subversionwindow의 경우 TortoiseSVN 를 설치한다.checkout: SVN 저장소 다운로드svn 저장소의 내용을 로컬 파일시스템으로 가져오기위해 checkout 명령을 사용한다.checkout을 통해 저장소의 특정 ..
OpenSSL Ciphers 에 대하여 이 글은 ssl cipher에 대한 이해가 부족하여 발생한 이슈 상황에 대하여 회고하는 글입니다. 상황 사내에서 nginx의 SSL 프로토콜 기준을 TLSv1.2 이상으로 지원해야 하는 일이 있었습니다. 모든 서비스에 공통으로 적용하도록 가이드가 내려왔기에, 이에 따라 기존 서비스들은 SSL 설정을 수정하였습니다. 가이드엔 SSL 프로토콜과 SSL Cipher 문자열의 수정이 있었는데요, 실질적으로 수정한 범위는 nginx의 ssl_protocols와 ssl_ciphers 를 수정해주면 되었습니다. 이 중 ssl_ciphers와 같은 경우 정보보호 강의 때 얼핏 들은 것으로 보이는 암호화 방식(AES, SHA…)으로 얽힌 복잡한 문자열 값을 설정해주어야 했었는데, ..
이 글은 스스로 회고하기 위한 글이며, 제가 개발했던 배치의 간단한 쿼리에서 인덱스 사용 여부로 엄청난 성능 차이를 몸소 느끼게 되어 작성하게 되었습니다. 상황 기존 데이터를 조회해 계산된 결과를 새로운 컬럼에 부여하는 마이그레이션 잡을 개발하였습니다. Spring Batch를 통해 개발하였고, Reader에서 데이블 내 모든 데이터를 페이징으로 조회, Writer에서 조회된 데이터를 계산하여 계산된 값으로 해당 튜플에 업데이트하는 간단한 배치 잡이었습니다. 빠른 마이그레이션을 위해 Writer 단계에서 10개의 스레드를 통해 계산 및 UPDATE를 수행하도록 한 상태였습니다. 마이그레이션 데이터의 크기는 환경마다 달랐으며 A환경 5만건, B환경 25만건 정도 존재하였습니다. 방심했던 이유 테스트 환경에..
개인적으로 Spring WebFlux를 공부한 적은 있었지만, 실제 프로젝트에 적용해본 경험은 없었다. 그러던 중 사내 레거시로 서버를 재개발할 기회가 생겼고, 상황과 조건이 맞아 SpringMVC로 개발중이었던 프로젝트를 WebFlux로 전환하게 되었다. 또한, 부서 내에서 WebFlux 경험을 공유하는 자리를 가졌었는데 스스로 공부가 많이되었기에, 이렇게 블로그에도 남긴다. WebFlux란? WebFlux는 Spring 5에 새롭게 추가된 Reactive-stack의 웹 프레임워크이다. WebFlux는 클라이언트와 서버에서 리액티브 애플리케이션 개발을 위한 논블로킹 리액티브 스트림을 지원한다. WebFlux 논블로킹으로 동작하는 웹 스택의 필요성 때문에 등장하게 되었다. 기존 SpringMVC의 Se..
Git 1. Git 이란 버전 관리 도구 리눅스 창시자인 Linus Torvalds가 2005년 리눅스 커널 소스코드를 관리하던 BitKeeper가 상용으로 전환되어 버전 관리시스템을 직접 개발하였다. 특징 및 장점 빠른속도 분산형 저장소 지원 (여러 명이 동시에 수정하는 환경에 적합) 비선형적인 개발 (branch) 완벽한 분산 리눅스 커널 같은 대형 프로젝트에도 유용하다 (속도와 데이터 크기 면에서) 2. Git 설정과 명령어 - install and user configuration Window 기준 git-scm.com에서 다운로드 후, git bash를 이용하여 user.name, user.email 설정 $ git config --global user.name "YOUR NAME" $ git ..
Git Flow 1. Git Flow 란? Vincent Driessen 이 사용한 성공적인 Git branching model 2. 주요 브랜치 master branch 먼저 배포했거나 곧 배포할 코드를 관리하기 위한 브랜치 master branch에 커밋하는것은 새로운 버전을 배포하는 행위로 엄격하게 이루어 져야한다 develop branch 배포할 것을 개발하는 코드를 관리하기 위한 브랜치 develop branch의 코드가 안정되고 배포할 준비가 되면 master로 merge하고 배포 버전으로 태그를 단다 3. 보조 브랜치 feature branch 갈라져 나온 브랜치: develop 다시 merge할 브랜치: develop 브랜치 이름 규칙: master, develop, release-*, h..