이 글을 작성하게 된 계기는 CI/CD와 무중단 배포의 차이점에 대해 궁금하게 되어 시작하게 되었습니다. 우선 CI/CD와 무중단 배포의 개념을 설명 한 후 어떤 점이 다른지 설명하겠습니다. CI/CD 란? 신입 개발자들이 처음에 개발을 진행할 때에는 서버에 코드를 올리는 것이 아닌 보통 로컬에서 진행하게 됩니다. 하지만 개발자는 결국 결과물을 보여줘야하는 직업이기에 제작한 소프트웨어를 서버에 올려 배포한 후 사용자에게 제공해야 합니다. 어떻게 하면 사용자에게 소프트웨어를 제공할 수 있을까? 아래의 순서를 따라 제공하게 됩니다. 1. 컴파일 우선, 우리가 만든 코드를 컴파일 합니다. 컴파일이란? - 우리가 만든 프로그래밍 언어를 기계가 이해할 수 있는 기계어로 변환하는 작업 우리가 사용한 Java, C ..
CS
HTTP(Hypertext Transfer Protocal)는 무엇인가? HTTP는 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기본적인 프로토콜 입니다. 주로 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용됩니다. HTTPS(Hypertext Transfer Protocal Secure)는 무엇인가? HTTP에 SSL을 사용한 것입니다. HTTP의 문제점은 전송되는 데이터가 암호화 되지 않는다는 단점을 가지고 있는데, 이것을 보완한 프로토콜 입니다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고 받을 때, 해당 정보가 도난 되는것을 막아줍니다. 그렇다면 왜 HTTPS를 사용해야 하나요? 1. 보안성 문제 ..
대학교 기말 프로젝트에서 프론트와 협업을 하던 도중 CORS에러를 만나게 되었습니다. 그 때는 아 이런 문제가 있구나 하고 해결책을 찾은 후에 넘어 갔지만, 다시 생각해보니 정리를 한번 해야 할 것 같아서 정리를 하려고합니다. CORS가 뭐에요? CORS는 Cross-Origin Resource Sharing의 약자로 직역하면 "교차 출처 리소스 공유" 입니다. 즉, 동일한 출처가 아닌 다른 출처에서 데이터를 주고 받는 것을 허용하는 정책입니다. 제가 멈추었던 부분이 여기까지 였습니다. 왜냐하면 아 이것때문에 문제가 발생했고 이렇게하면 고칠 수 있겠구나 라고요. 하지만 저희는 여기서 더욱 사고 해야합니다. "왜 이러한 정책이 필요할까?" 이 문제를 이해하려면 "동일 출처 정책" 에 대해서 알아야 합니다...
프레임워크의 정의 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 class, method들을 구현하면 됩니다. 프레임워크의 장단점 장점 가이드를 제공함으로써 프로그램을 체계적으로 관리할수 있다 기본적인 설계와 라이브러리를 제공하여 개발 속도를 향상시킨다 코드의 재 사용성이 높고 확장성이 좋다 단점 각 프레임워크에 따른 공부가 필요하다 자유롭고 유연한 코드를 개발이 불가능하다( 프레임워크가 짜놓은 틀 안에서 개발해야 하기 때문에) 프로젝트의 용량이 증가한다 라이브러리의 정의 소프트웨어를 개발할 때 컴퓨터 프로그램..
문득 SpringBoot로 웹을 개발하면서 궁금증이 생겼습니다. "애는 뭐하는 놈일까?" 먼저 HikariPool을 알기 전에 커넥션 비용이라는것이 뭔지 알아야 했습니다. 커넥션 비용 WAS(Web Application Server)와 데이터베이스 사이의 연결에는 많은 비용이 듭니다. MySQL 8.0 버전을 기준으로 INSERT 문을 수행할 때 필요한 비용의 비율은 다음과 같습니다. (괄호의 숫자가 비용의 비율입니다.) Connecting (3) Sending query to server (2) Parsing query (2) Inserting row (1) Inserting index (1) Closing (1) 즉, 서버가 DB를 연결하기 위한 Connecting 비용이 가능 큰 비율을 차지하게 됩..
❓TDD? TDD(Test Driven Development)는 테스트 주도 개발입니다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위에 테스트 케이스를 작성하여 이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다. ❓TDD 개발주기 [Write Failing Test] 는 실패하는 테스트 코드를 작성합니다 [Make Test Pass]는 테스트를 성공하기 위한 실제 코드를 작성합니다 [Refactor]는 중복 코드를 제거, 일반화 등의 리팩토링을 수행합니다 중요한 것은 실패하는 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야 합니다. 이를 통하여 실제 코드에 대해 기대되는 바를 보다 명확하게 정의함으로써 불필요한 설계를 피..
이 글은 "구글 엔지니어는 이렇게 일한다" 책을 보면서 요점 정리를 하는 글 입니다. http://www.yes24.com/Product/Goods/109182479 구글 엔지니어는 이렇게 일한다 - YES24 구글은 어떻게 개발하고 코드를 관리하는가지난 50년의 세월과 이 책이 입증한 사실이 한 가지 있다. 바로 `소프트웨어 엔지니어링의 발전은 결코 정체되지 않는다`라는 것이다. 빠른 기술 변화 www.yes24.com 프로그래밍과 소프트웨어 엔지니어링의 가장 큰 차이 시간 (규모) 확장 실전에서의 트레이드오프(trade-offs) 시간이 프로그램에 미치는 영향 "이 코드의 예상 수명은?" 이라는 질문을 던져보면 좋습니다. 단순히 구동 수명(execution lifetime)이 아니라 유지보수 수명(m..
API(Application Programming Interface) API(Application Programming Interface)는 '서버와 클라이언트가 데이터를 주고 받을 수 있도록 도움을 주는 매개체' 라고 정의할 수 있다. API를 사용하기 위해서 사용자는 서버와 클라이언트 사이에 존재하는 몇 가지 약속을 따라야 한다. 메시지의 데이터 형식은 무엇이고, 글자 수 제한이 있다면 몇 자인지, 어떤 방식으로 데이터가 전달되어야 하는지, 요청에 대한 결과는 어떤 형식으로 확인할 수 있는지 등과 같은 약속들을 예로 들 수 있다. 이러한 약속을 확인하는 방법은 API문서를 활용하는 것이다. API 문서 구성 앞서 API문서는 서버와 클라이언트간 특정 기술을 사용하기 위한 약속이라고 정의했는데, '약속..