분류 전체보기(67)
-
'클린코드'에서 이야기하는 깨끗한 코드
프로그래밍 언어의 추상화 수준은 점점 높아질 것이다. (스프링 부트, 장고와 같은 프레임워크를 보면 알 수 있다.) 코드는 결국 요구사항을 표현하는 언어라는 사실을 명심하자. 나쁜 코드 대중적으로 아무리 인기가 많은 애플리케이션을 만들었어도, 회사를 망하게 하는 원인 중 하나는 나쁜 코드이다. 나쁜 코드를 짜는 이유는 다양하다. 귀찮았거나, 바쁘거나... 그래서 우선 대충 짜 놓고 나중에 개선하기로 미루는 경우가 많지만, 르블랑의 법칙에 따라 그러한 나중은 결코 오지 않는다. 나쁜 코드는 아무리 인력을 투입해도 생산성은 0에 가까워진다. 새로운 인력은 기존 시스템에 적응할 시간이 필요한데, 코드가 복잡하니, 당연히 적응하는데 많은 시간이 걸릴 수밖에 없고, 이해했어도 해당 코드를 수정하는 데는 너무나 오..
2022.06.17 -
RabbitMQ -1- AMQP 0-9-1 프로토콜
출처 : https://www.rabbitmq.com/tutorials/amqp-concepts.html#programmable-protocol Overview RabbitMQ는 AMQP 0-9-1 protocol을 기반으로 한 메시지 브로커이다. AMQP 0-9-1 and the AMQP Model? AMQP 0-9-1(Advanced Message Queuing Protocol)는 클라이언트 애플리케이션이 특정한 미들웨어 브로커와 메시지를 주고받게 하는 프로토콜을 이야기한다. 메세지 브로커는 Publisher (메시지 송신자 혹은 producer)가 보낸 메시지를 받고, 특정한 Consumer(메세지 수신자)에게 라우팅을 해주는 역할을 갖는다. AMQP가 네트워크 프로토콜이라는 점을 감안하면, pub..
2022.05.19 -
암호 알고리즘 -1- 개요
1. 암호 알고리즘의 종류 및 정의 1.1. 단방향 암호화 기법 한쪽 방향으로만 암호화 기법이며, **'해시 알고리즘'**라고도 부른다. 해시 알고리즘으로 변환된 값이나 키를 '해시값' 혹은 '해시 키'라고 부른다. 1.1.1 MDC(Modification Detection Code) 대표적으로 **SHA-1/SHA-2, MD5, HAVAL**등이 있다. 메세지 변경이 일어났는지 아닌지를 확인하는 기법. 데이터의 무결성을 판단한다. 해싱된 암호문으로부터 원본 메시지를 알 수 없어야 하고 메시지와 해시값은 1:1이 되어야 한다. **송신자:** 원본 메시지는 그대로 보내고, 암호화된 해시값은 안전한 채널로 보내게 되는데, 이때 외부로부터 변경이 되지 않는다는 보장이 되어야 한다. **수신자:** 수진자는 ..
2022.05.10 -
[회고] 기능 구현부터 배포 자동화까지... -2- CI/CD를 어떻게 구현해야 할까?
본 게시글은 https://github.com/f-lab-edu/double-shop에서 CI/CD를 구성하는 데 진행했던 과정을 정리한 내용입니다. CI/CD를 설계하는 데 필요한 방향을 찾는 데는 도움이 될 수 있겠지만, 구체적인 구현 기술에 대한 내용을 찾는 다면 이 게시글은 도움이 안 될 수 있습니다. 개요 저번 게시글에서는 CI/CD가 왜 필요한지에 대해 간단히 나의 생각을 정리해보았다. 내용을 요약해보자면, CI/CD와 같은 복잡하고 어려운 작업을 왜 해야 하는지 어떻게 해야 하는 지를 구체적으로 정의하는 과정이 필요하다는 것이었다. 물론 개인 프로젝트를 진행한다면, 이 과정은 필요 없을 것이다. 하지만, 보통 개발회사에서 한 명의 개발자가 하고 싶은 것을 마음대로 하다가 안되면 그냥 그만둬버..
2022.04.22 -
[회고] 기능 구현부터 배포 자동화까지... -1- 왜 CI/CD가 필요할까?
본 게시글은 https://github.com/f-lab-edu/double-shop에서 CI/CD를 구성하는 데 진행했던 과정을 정리한 내용입니다. CI/CD를 설계하는 데 필요한 방향을 찾는 데는 도움이 될 수 있겠지만, 구체적인 구현 기술에 대한 내용을 찾는 다면 이 게시글은 도움이 안 될 수 있습니다. 개요 최근에, Jenkins CI툴과 github action을 활용하여, CI/CD 구성을 1차적으로 완료하였다. 시작하기 전부터 만만한 작업이 아니라고 생각했지만, 실제로 해보니, 과정을 이해하는 것도 쉽지 않았고, 이해한 후에 실제로 구현해보는 것은 더더욱 어려웠다. 이번 게시글에서는 CI/CD를 구성하기 위해 겪었던 시행착오 과정을 정리하여, 그동안 수행했던 학습과정과 삽질들을 기록하여, 퀄..
2022.04.22 -
작업일지#14 Sync와 Async 속도차이
트랜잭션 단위 상품 등록 was 클라이언트 요청 세션 서버 리소스 접근을 위한 인증 확인 파일서버(S3) 상품 이미지 put 요청 aws lambda를 통해, 원본 이미지를 섬네일 사이즈로 압축 및 복사 (총 2개의 이미지를 2개의 s3 bucket에 저장) was s3 키값 전달 데이터베이스 MySQL에 상품 정보 Insert was 상품 등록 성공 여부 및 추가된 상품 정보 응답 메시지로 클라이언트에 전달 실험을 하게 된 계기 기존에는 파일 업로드를 포함하여, 단일 기능을 구현하는 데 필요한 비즈니스 로직을 전부 하나의 데이터베이스 트랜잭션에 포함하였다. 그러나, 최근에 이미지 업로드 기능을 추가하면서, 로컬 환경에서 실험했음에도 불구하고, 응답 시간이 거의 2배 이상 늘었다. tomcat의 thre..
2022.03.24