기술 이야기
-
Docker Compose 한국 표준 시간 설정하기기술 이야기/CI&CD 2020. 12. 31. 12:08
Docker Compose Timezone Setting 개발을 하다보면 현재 시간을 활용한 코드가 발생할 수 있다. 어떠한 시간 기준에 따라 무언가를 처리하는 로직이 존재할 때, 서버와 요청하는 클라이언트의 표준 시간이 다르면 곤란하다. 현재 운영하고 있는 서비스에서도 현재 시간을 검사해야하는데, 서버 시간과 클라이언트의 시간이 달라서 조금 난감한 상황이 생겼다. Docker Compose로 컨테이너를 관리하고 있는데, 서버 시간을 셋팅해도 도커 컨테이너 시간이 바뀌지 않는 것이었다. (어찌보면 당연하다) 본론으로 넘어가면, compose 야믈 파일에 환경 변수를 설정해주면 된다. version: '2' services: myContainerName: image: ImageName .....
-
프로젝트를 TDD로 진행하며 느낀 TDD 경험담기술 이야기/TDD 2020. 12. 19. 20:13
TDD란 무엇인가?? TDD는 Test-Driven-Development의 약자로 말 그대로 테스트가 이끄는 개발이라는 개발 방법론이다. 아주 짧은 개발 사이클을 반복하며, 많은 개발자들이 채택하고있는 방법론 중에 하나이다. 요구사항을 검증하는 테스트 케이스 작성 ~> 테스트를 통과하기 위한 최소한의 코드 구현 ~> 작성한 코드를 표준(요구사항 명세)에 맞도록 리팩토링 테스트 케이스를 작성하고 테스트를 통과하기 위해 코드를 구현할 때, 설계 상의 오점을 빠르게 파악하여 수정하며 진행할 수 있다는 장점이 있다. 할고래DO의 TDD API 서버에서 유닛 테스트를 검증하며 TDD 방법론을 기반으로 개발을 진행했다. service와 api 모두 테스트를 진행하며 TDD를 하는 것이 정석이지만, 할고래DO를 개발..
-
NCP와 Jenkins 글 보완 및 새로운 내용들기술 이야기/CI&CD 2020. 12. 19. 17:41
왜 CI & CD를 생각하게 되었는가?? 부스트캠프의 수 많은 여정에서 프로젝트를 서버에 올리고 정상적으로 작동하는지 확인하는 작업은 생각보다 시간을 많이 차지했었다. 할고래DO 이전의 프로젝트를 진행할 때, 이 시간을 아껴서 개발이나 기술 학습에 조금 더 투자해보면 어떨까? 라는 생각이 들었고 실천에 옮겼다. 리서치 결과 CI 툴로 Jenkins와 Travis가 가장 많이 사랑을 받고 있었고, 각각의 장단점이 많았지만 체감이 되지않아 CI 계의 아버지인 Jenkins를 선택했었다. 이번 프로젝트에서도 배포에 투자하는 시간을 더욱 아끼기위해 사용해봤던 Jenkins를 CI & CD(여기서는 Delivery 입니다) 툴로 선택했다. 그렇다면 왜 무중단 배포일까?? Jenkins를 통해 새로운 배포 버전을 ..
-
NCP(Naver Cloud Platform)와 Jenkins -3) CD 환경 구축기술 이야기/CI&CD 2020. 11. 2. 16:24
Jenkins, Nginx, docker를 활용한 무중단 CD 보통은 Jenkins 서버와 배포하는 서버를 따로 두지만, NCP에서는 Jenkins가 탑재된 Server를 생성할 수 있고 프로젝트의 규모가 크지 않기 때문에, 하나의 서버에서 진행하는 것으로 전제한다. Docker 설치 패키지 저장소 추가 (도커의 공식 GPG 키와 저장소를 추가) sudo apt-get update && sudo apt-get install \ sudo apt-transport-https \ sudo ca-certificates \ curl \ sudo software-properties-common sudo: unable to resolve host라는 값이 console에 찍힌다면, /etc/hostname이 /etc..
-
NCP(Naver Cloud Platform)와 Jenkins -2) CI 환경 구축기술 이야기/CI&CD 2020. 10. 29. 01:01
CI 환경 구축 Jenkins 설정 Jenkins는 기본적으로 보안 설정이 되어있지 않기 때문에, 보안 설정을 따로 해줘야한다. Jenkins url 접속 후 Configure Global Security 클릭 권한 설정 Security Realm은 default 설정인 Jenkins' own user db로 설정한다. 인증은 Matrix-based security로 설정 사용자나 그룹에 권한을 부여할 수 있는 strategy 젠킨스를 공동 작업하는 팀원이 있다면, 위에서 사용자의 가입 허용을 체크하고 계정을 생성해서 권한을 부여하면 된다. 하지만, 젠킨스 관련한 작업은 우선 혼자 진행할 예정이기 때문에 모든 유저에 READ만, 작업자인는 나에게 모든 권한을 부여했다. 필요하다면 나중에 팀원 계정..
-
NCP(Naver Cloud Platform)와 Jenkins -1) 서버 구축기술 이야기/CI&CD 2020. 10. 27. 23:11
NCP를 이용한 Jenkins 서버 구축 서버 생성 이미지 타입에서 Application 선택 후, Jenkins 이미지 체크 인증키 설정 특이 사항은 없음 ACG(방화벽) 설정 기존 ACG 설정이 있다면 이용해도 괜찮다. 이번 서버 구축에서는 필요한 주소만 추가하면서 여는 연습을 하기 위해 새로 생성 Public IP 설정 Jenkins 상태 확인 명령어 Jenkins 프로세스 기동 및 중지 service jenkins start service jenkins stop service jenkins status 상태 확인 ~> 실행 중인 것을 확인할 수 있음 웹 브라우저로 Jenkins 접속 공인IP:18080 초기 접속화면으로 위와 같은 화면을 확인할 수 있다. 초기 패스워드는 터미널에서 확인할 수 있다..
-
MVC 패턴기술 이야기/Design 2020. 10. 20. 15:54
MVC 패턴 간략하게 정리 Model 비즈니스 로직을 구현하는 영역, 데이터를 처리하는 부분 DB 연결 및 데이터 CRUD 작업을 수행 최근에는 domain 영역과 비즈니스 로직 영역을 나누어 service에서 비즈니스 로직을 분기 처리, domain에서 각 역할을 분기처리 View 컨트롤러에게 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 역할 만들어진 화면을 웹 브라우저에 전송 ~> 웹브라우저가 출력 Controller 클라이언트 요청에 따라 실제 업무를 수행하는 모델 컴포넌트를 호출해주는 역할 클라이언트가 보낸 데이터를 모델에 전달할 때, 데이터를 가공하기도 한다. 2020.12.04 추가 컨트롤러의 역할은 시스템을 사용하기 위한 인프라와 관련된다.(데이터 관련 X) 비즈니스 로직은 ..
-
TDD(Test-Driven-Development, 테스트 주도 개발)기술 이야기/TDD 2020. 10. 20. 15:53
TDD란 무엇인가 Tset-Driven-Development => 테스트 주도 개발 짧은 개발 사이클에 의존하는 개발 프로세스 새로운 기능에 대한 자동화된 테스트케이스 작성 ~> 테스트를 통과하는 간단한 코드 작성 테스트 종류 단위 테스트 Unit test : 소프트웨어의 최소단위, 보통 함수를 가리킴 통합 테스트 Integration test : 단위 기능이 합쳐진 기능에 대한 테스트 시스템 테스트 System test : 위 내용보다 더 큰 개념, 전체 시스템에 대한 동작 테스트 인수 테스트 Acceptance Test : 고객이 ok할 수 있는지 판단하기 위한 테스트 TDD의 장단점 장점 객체지향적인 코드 개발 명확한 기능과 구조를 설계할 수 있음 코드 재사용성을 보장하면서 코드를 작성하게 됨 설계..