애플 로그인을 구현할 때 로그를 보면서 수정이 필요한 상황이었다.
로깅처리가 하나도 안되어있어서 당장의 sout으로 로깅을 보는 수준의 상황.
이번에 제대로 로깅을 추가해보자.
스프링에서는 logback이나 log4j2를 사용한다.
성능을 봤을땐 당연 log4j2가 좋다.

성능 관련 지표이며 logback의 위치를 보았을때 굉장히 낮은 위치에 속하는걸 볼 수 있다.
그럼 무조건 logback보단 log4j2가 좋은거 아니냐? 라는 말을 할수 있다.
틀린말은 아니다.
그럼에도 logback을 선택하였다.
이유는 : elk가 싫었고, fluentd를 선택하고 싶었기 때문이다.
그렇다면 구글에 한번 logback fluentd와 log4j2 fleuntd를 검색해보길 바란다.
그렇다면 logback을 활용한 fluentd예제와 이슈 정리 등 굉장한 많은 자료들이 반겨줄 것이다.
위와같은 이유로 나는 fluentd를 선택하기 위해서 logback을 선택하였다.
fluentd와 logstash,datadog, Sentry 등등 있었다.
아마 다들 ELK EFK는 많이 들어봤을 것이다. 그 만큼 대표적이라고 볼 수 있다.
그럼 ELK의 L은 로그스태시 인데 F는 무엇인가? fluentd이다.
그럼 소거법으로 지워서 ELK와 EFK에 대해서 비교를 해보자.
난 여기서 우리 환경에 대해서 한번 생각해보기로 했다.
스타트업의 환경에서 많은 ec2를 사용하지 않으며 비용최적화 상태에서 진행해야한다.
최대한 스택을 뺄수있다면 오히려 빼는게 이득인 상황이다.
그럼에도 확장성은 보유하고 싶다.
이 상황의 최적의 솔루션은 ELK도 EFK도 아닌 fluentd다.
이유는 fluentd의 경우 혼자서도 사용이 가능하다.
실제로 fleuntd + s3로 설계하는 케이스도 있다.
그렇다면 최소화 시킬 수 있는 환경이라면
키바나랑 엘라스틱서치를 설치하지 않아도 되는 fluentd가 조금 더 최적화 된 상황이라고 생각하였고
fleuntd를 골랐다.
스프링에서 발생한 로그를 fleuntd로 보내고 fluentd에서 json 포맷과 압축에 대한 처리를 해서 s3로 보낸다.

하지만 이 때 조심해야 되는 이슈가 있다.

남들이 좋다고 써라 할때 무작정 쓰면 안된다. 한번 github나 자료를 찾아봐야한다.
fluentd s3의 plugin에는 비용관련 이슈가 있다.
버그로 등록은 되어있지만. 주의하라는 문구인것 같으며 해결방법도 있다.
1편은 여기까지. 2편으로 돌아오거나 수정하여 이어쓰도록 하겠다.
[참고자료]
| https://codedatasotrage.tistory.com/85
| https://docs.fluentd.org/output/file
| https://docs.fluentd.org/output/s3
| https://github.com/sndyuk/logback-more-appenders/blob/master/src/test/resources/logback-appenders-fluentd.xml
https://velog.io/@hyundong_kk/EFK-EKS-DataDog%EB%A1%9C%EA%B7%B8-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0
[비용 이슈]
https://github.com/fluent/fluent-plugin-s3/issues/160