전체 글 21

CRLF와 LF차이의 이해

왜 LF를 사용하라고 하지? 개발을 하면서 협업을 할 때 Code Convention을 맞추기 위해 Check Style을 사용한다. Check Style파일을 열어보면 줄바꿈 타입을 체크하는 부분이 있고, 줄바꿈 시 CRLF는 금지하고 LF는 허용하도록 설정되어있다. 아래는 네이버에서 제공하는 check style xml이다. 1 2 3 4 5 6 7 8 9 Colored by Color Scripter cs CR, LF란? CR, LF는 타자기에서 유래된 단어이다. 타자기로 문서를 작성할 때 한 줄에 글자를 다 입력했으면 아래 줄로 이동시켜줘야한다. 아래 줄로 이동 하는 것이 Line Feed(LF)이고, 왼쪽 끝으로 밀어 주는 것이 Carrige Return(CR)이다. 사전적 의미 CR(Carri..

개발환경 2022.03.28

배포 전략(Recreate, Rolling, Blue/Green, Canary)

과거에는 배포라는 작업이 아주 큰 이벤트였다. 하지만 최근에는 서비스를 구성할 때 MSA를 많이 사용하고 더 자주 배포를 하게된다. 이러한 과정에서 배포전략들이 다양하게 발전해왔는데 가장 대표적인 배포전략 몇가지만 ARABOZA! Recreate 모든 서버를 중지하고 새로운 버전으로 배포한 후 다시 서비스를 올리는 방법이다. 다운타임이 발생하는 배포전략이기 때문에 테스트서버 및 서비스가 중단되어도 문제가 없는 서버등에서 사용한다. 일반적으로 사용되는 배포전략은 아니다. Rolling 가장 일반적이며, 많이 사용하는 배포 방법이다. 여러대의 서버가 있을 때 새로운 버전의 서비스를 서버마다 순차적으로 배포한다. 장점 서버를 점차적으로 배포하는 방식으로, 서버 자원이 한정적인 경우 유리하다.(서버자원이 2배가..

DevOps 2021.06.22

간단하게 AWS용어들을 정리해보자

기본개념 리전(Region) - 리전은 AWS의 물리적 장소가 있는 지역 - 한국에도 16년 1월에 서울 리전을 공개했다. (서울리전 코드 : ap-northeast-2) - 우측 링크를 접속하면 지역별 대륙별로 리전들의 리소스 상태를 볼 수 있다(https://status.aws.amazon.com/) 가용영역(Availability Zone) - 한개의 리전에는 다수의 가용영역이 있다. - IDC와 같은 개념이다. - 한개 리전에 2개 이상의 가용영역이 존재한다. - 정전, 자연재해 등 외부 영향이 발생했을 때 한개의 가용영역이 불능상태가 되어도 다른 가용영역을 사용할 수 있다. - L4장비(ELB)로 두개의 가용영역을 로드밸런싱 하면 한개의 가용영역이 불능상태가 되어도 서비스를 유지할 수 있다. 엣..

AWS 2021.06.17

간편하게 ssh접속하기

AWS나 네이버클라우드에서 설치한 클라우드 서버에 ssh접속할 때 아래와 같은 과정을 거친다.(귀찮다) 콘솔창 켜고 - 메모장 열고 - 아이피, user-name복사하고 - 콘솔창에 붙여넣고 - 접속 AWS가이드에도 ssh접속방법이 아래와 같이 나와있는데 pem파일 이름 user-name dns또는 ip까지 입력해야한다(귀찮다) # public dns로 접속 $ ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name # IPv6 주소로 접속 $ ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-IPv6-address [AWS] SSH 클라이언트를 사용하여 L..

개발환경 2021.06.16

2. 서비스에 APM을 적용해보자 - 슬랙 연동하기

이전글 [서비스에 APM을 적용해보자 - APM선택과 설치]에는 스카우터를 설치 및 실행까지 했다. 스카우터 클라이언트 프로그램을 띄워놓고 하루종일 모니터만 볼 수는 없기 때문에 서비스에 문제가 발생하면 메신저로 알람을 발송해보자 스카우터에서는 서버의 문제가 발생하거나 서버오류가 발생했을 때, 슬로우 쿼리가 발생했을 때와 같이 문제가 발생하면 알림을 보낼 수 있는 플러그인을 제공하고 있다. (슬랙/텔레그램/이메일/팀업/딩톡) 슬랙 메신져를 업무용으로 사용하고 있기 때문에 슬랙 플러그인을 적용해보았다. 슬랙 alert 플러그인 스카우터의 슬랙 alert플러그인은 서버에서 발생한 alert메세지를 슬랙메신저로 발송해준다. 아래 정보들에 대한 알림을 기본적으로 제공하고 커스텀 알림 또한 설정할 수 있다. 기본..

DevOps 2021.04.19

1. 서비스에 APM을 적용해보자 - APM선택과 설치

서비스를 운영함에 있어 APM의 활용은 많은 이점을 줌으로 선택이 아닌 필수다. 문제가 발생했을 때 빠르게 찾을 수 있고 어플리케이션 성능을 모니터링 하면서 추후 문제가 될 부분에 대해 튜닝을 하며 서비스를 안정적으로 운영할 수 있게 도와준다. 도입이유 서비스에 문제가 발생하거나 비효율적으로 서비스가 운영되고 있을 때 서버로그를 뒤적거리면서 문제점을 찾기에는 너무나 많은 시간이 소요되고 찾기도 힘들다. APM을 사용하면 문제점을 빠르게 탐지할 수 있다. APM에 대해 간단하게 개념정리를 하자면 APM (Application Performance Management) 말 그대로 어플리케이션의 성능 관리 서비스이다. 미들웨어(톰캣, 제이보스 등)에서 일어나는 트랜잭션을 분석하여 성능에 영향을 미치는 부분을 ..

DevOps 2021.01.03

[Python] QR코드를 빠르게 만들어보자

며칠 전 회사 팀원 중 한분이 끙끙 앓고 계시길래 무슨 일이냐고 물어봤더니 - 기획팀에서 3000여개의 URL을 네이버QR코드 생성기를 사용해서 몇시간에 걸쳐 QR코드를 생성하고 개발팀에 전달 - 적용해보니 URL이 잘못 입력되어 있어서 3000여개의 QR코드를 다시 만들어야 하는 상황 - 서비스 오픈은 몇시간 남지 않은 상태 서비스 오픈이 몇시간 남지 않은 상태에서 네이버QR코드 생성기로 한땀한땀 QR코드를 다시 만들기에는 시간이 부족해서 구글링을 하여 방법을 몇가지 찾아봤다. 구글 Chart API 엑셀 함수 파이썬 스크립트 구글 Chart API와 엑셀 함수는 파일로 저장하는 기능이 없어서(못 찾아서) 파이썬 스크립트를 활용해서 생성하기로 했다. (파이썬을 다뤄보지 않아 코드 내용이 많이 부족할 수..

Python 2020.11.15

[모니터링] 서비스에 문제가 생기면 메세지를 받아보자

서비스를 운영할 때 예상치 못한 부분에서 장애나 오류는 언제든지 일어날 수 있다. 사전에 예방하는 것도 중요하지만 장애가 발생했을 때 이를 빠르게 인지하고 대처하는 것 또한 중요하다. 도입이유 - 물리적 서버 문제 발생 시 사용하고 있는 클라우드 서비스에서 알람을 보내주지만 어플리케이션단의 문제가 발생했을 때 노티기능이 없다. - 서비스에 문제가 있는 상태에서 방관하고 있으면 유저에게 서비스에 대한 신뢰를 잃어버릴 수 있다. 의사결정 배경 및 요구사항 - 문제가 발생했을 떄 즉시 인지할 수 있어야 한다. - 다른 할일도 많다 개발이 간편해야한다. - 팀원에게 익숙한 언어이거나 러닝커브가 작아야한다. - 비용적인 문제가 없어야 한다. - 시스템 관련 알림채널은 통일되어야 알림이 왔을 때 집중할 수 있다. ..

DevOps 2020.11.04

스프링부트와 AWS로 혼자 구현하는 웹 서비스

동기 회사에서 다년간 똑같은 기술로 업무를 진행해서인지 요새 고인물에 너무 오래 머물러있는게 아닌가 생각이 들었고 그러한 생각이 들 때마다 개발자 컨퍼런스를 종종 다녀오곤한다. 개발자 컨퍼런스에서 이동욱 개발자님의 강의에서 책소개를 받게 되었고 마침 평소에 하고싶었던 스프링부트와 AWS로 책이 구성되어 있었다. 1. 스프링 경험 현재 다니는 회사에서 스프링 4.x로 업무를 하고 있어 스프링 부트 학습에 대한 러닝커브가 적을 것 같았다. 또한 이전부터 스프링 부트로 개인프로젝트를 진행하고 싶었다. 2. AWS 경험 친구들과 AWS 학습을 아주 얕게 학습/경험한 적이 있다. 또한 요즘 많은 회사들이 AWS경험자를 선호하고, 현재 다니고 있는 회사의 일부 서버도 AWS로 구성되어있다. 3. 책이 얇다 이론만 ..

Book 2020.06.09

[Lombok] 반복되는 코드작업을 해결해주는 코드 다이어터 롬복

Lombok으로 코드 다이어트 하기 롬복은 Java기반에서 VO, DTO, Entity클래스를 생성할 때 반복적으로 작성하는 getter, setter, toString과 같은 작업들을 어노테이션을 사용하여 보다 더 간편하게 개발할 수 있게 도와주는 라이브러리이다. Lombok을 사용하면 1. 반복되는 코드를 줄여줌으로 코드의 가독성이 좋아진다. 2. 반복되는 코드를 줌여줌으로 생산성이 증가한다. 3. JPA를 사용하고 있는 경우 JPA환경과 일관화됨으로 가독성이 좋은 코드를 작성할 수 있다. 단점도 몇가지 있다. 1. 모든 협업 인원이 lombok을 설치해야한다. 2. @Data @ToString어노테이션으로 자동 생성되는 toString()메서드의 순환참조, 재귀호출 문제로 스택오버플로우가 발생할 수..

Java 2020.06.09