만쥬의 개발일기
[Go] - golang 에러처리에 대한 고민과 opaque 에러로 똑똑하게 처리하기

프로그램은 여러 가지 원인으로 인해서 의도하지 않은 방향으로 동작하거나, 종료될 수 있습니다. 따라서 어떤 언어를 선택하든간에 로깅과 에러핸들링, 테스팅은 가장 기본적이며 가장 먼저 체화해야 한다고 생각합니다. 다양한 언어에서 오류/예외를 처리할 때 Opaque(불투명) error handling을 채택하곤 합니다. 그렇다면 golang에서는 왜 Opaque error handling을 선택해야 하며, Opaque erro handling이란 무엇인가 알아보겠습니다. Opaque Type (불투명한 타입) 불투명한 반환 타입이 있는 함수 또는 메서드는 반환값의 타입 정보를 가립니다. 함수의 반환 타입으로 구체적인 타입을 제공하는 대신에 반환값은 지원되는 프로토콜 측면에서 설명됩니다. 반환값의 기본 타입이..

article thumbnail
[이펙티브 자바] - 아이템 29 ~ 31
📖BOOK/📙Effective Java 2024. 2. 28. 10:21

아이템 29 - 이왕이면 제네릭 타입으로 만들라 왜 굳이 제네릭 타입을 사용해야할까? 예시와 함께 알아보자. 오브젝트를 기반으로 제작된 Stack 클래스 예시. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size == 0 throw n..

article thumbnail
[ISTQB] - ISTQB CTFL 취득을 위한 Syllabus 총 정리 - 1
🪪자격증/🔎ISTQB 2024. 2. 26. 16:23

본 포스팅은 ISTQB 공식 Syllabus와 공식 Udemy 강의를 기반으로 학습한 내용입니다. 1장 테스팅이란 무엇인가? 소프트웨어 테스팅은 소프트웨어의 품질을 평가하고, 운영 중 소프트웨어 장애의 발생 가능성을 줄이는 하나의 방법이다. 소프트웨어 테스팅이란 다양한 활동을 포함하는 프로세스이며 테스트 실행(결과 확인 포함)은 그 많은 활동 중 하나일 뿐이다. 테스트 프로세스는 테스트 계획, 분석, 설계, 테스트 구현, 테스트 진행 상황 및 결과 보고, 테스트 대상 품질 평가 등 많은 활동을 포함한다. 테스팅 활동에는 테스트 대상 컴포넌트나 시스템을 실행하는 것도 있다. 이런 테스팅을 동적 테스팅이라 부른다. 반면 테스트 대상 컴포넌트나 시스템을 실행하지 않는 테스팅도 있다. 이런 테스팅은 정적 테스팅..

article thumbnail
[CI/CD] - 무중단 배포 withCI/CD 3: github action을 활용한 CD 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 16:06

최종 아키텍쳐 이제 CI부분까지는 완료됐으니, 배포 부분 yml만 작성해주면 끝이다. 먼저 빌드 부분 yml 파일을 작성하기 전에 러너를 선택해야되는데, 깃허브 액션의 기본 러너를 사용하면 깃허브 액션을 실시할 때마다 러너의 IP가 바뀌기 때문에 서버의 인바운드 규칙을 설정하기가 상당히 애매해진다. 따라서 내 서버를 러너로서 사용하는 self-hosted runner를 선택했다. Self-hosted 러너 설정 actions ➡️ runners ➡️ new self-hosted runner를 선택해준다. 배포 서버의 운영체제에 맞게 선택해주고, 하단에 있는 스크립트들을 배포서버의 배포 폴더에서 실행시켜 주면 준비 끝! Self-hosted 러너 테스트 name: nsfServer Github Action..

article thumbnail
[CI/CD] - 무중단 배포 with CI/CD 2: github action을 활용한 CI 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 15:57

지난번 젠킨스에 이어, 이번엔 github action을 활용해 CI/CD를 구축해보자. 먼저 CI (Continuous Integration) 환경을 구축하는 법을 알아보자. 구축하고자 하는 최종 아키텍쳐는 다음과 같다. CI/CD 학습용이기 때문에 EC2 하나로 구현을 시도하였다. 그러나 추후 여러 문제로 인해 green group을 위한 ec2 서버를 추가하였다. (무중단 배포 불가능한 이슈) github action 시작하기 github 프로젝트 ➡️ actions에서 workflow를 하나 작성해준다. 기본 workflow를 다음과 같이 수정해준다. 필자는 프로젝트에서 mysql 설정을 [application-mysql.properties](http://application-mysql.prope..

article thumbnail
[CI/CD] - 무중단 배포 with CI/CD 1: nginx + spring 로드 밸런싱 편
♾️DevOps/♾️CI & CD 2024. 2. 26. 15:49

구축하고자 하는 최종 아키텍쳐는 다음과 같다. 3편까지 모두 따라하고 나면 다음과 같은 아키텍쳐를 구축하게 된다. (단, 추후 EC2가 한 개 더 필요해진다.) 먼저 이번장에서는 스프링으로 구축한 서버를 nginx로 로드밸런싱 하는 부분을 다뤄볼 것이다. 이번 장에서 목표로 하는 아키텍쳐는 다음과 같다. 위 그림이 현재 목표인 아키텍쳐이다. (물론 최선은 각각을 하나의 EC2에 두는 것이다.) Docker를 사용해 한 컴퓨팅 자원에서 웹서버와 WAS를 분리한다. 각각의 이미지가 분리되어있기에 인프라 구축에 용이하다. Nginx를 사용한 로드 밸런싱 서버로 들어오는 요청을 8081,8082에 띄워진 두 WAS로 나누어 부하를 분산시킬 수 있다. 무중단 배포 배포 시 하나의 서버에 배포를 진행한다면 반드시 ..

article thumbnail
[Network] - SSL 공인 인증서와 SSL 사설 인증서의 차이, SSL 인증서 확인
🖥️CS/🛜네트워크 2024. 2. 26. 09:48

공인 SSL 인증서 공인 SSL 인증서는 인증 기관(CA)에서 발급하는 인증서입니다. 일반적으로 인터넷에서 접근하는 사이트들은 공인인증서가 적용되어 있다고 생각하시면 됩니다. 사용자 PC에 따로 인증서를 설치하지 않더라도 문제없이 https가 적용된 웹사이트를 사용할 수 있습니다. 사설 SSL 인증서 사설 SSL 인증서는 공인 인증 기관이 아닌 특정 조직에서 발급합니다. 예를 들어 A라는 회사가 자사가 인증한 SSL 인증서를 발급할 수 있습니다. 이런 인증서는 인터넷으로 서비스되는 웹사이트가 아니라 기업 내에서 직원들이 접속하는 웹사이트에서 주로 사용합니다. 내부망에서 이루어지는 통신이라 할지라도 보안 관련 인증심사에서 https 적용 여부를 확인하기 때문에 심사를 준비하는 기업은 적용하는 경우가 많습니..

article thumbnail
[Network] - http와 https , SSL 개념 총 정리
🖥️CS/🛜네트워크 2024. 2. 23. 15:05

HTTP(Htpertext Transfer Protocol) : 클라이언트와 서버 간 통신을 위한 HTML을 전송하기 위한 통신 규칙 또는 프로토콜. 통신규약: 데이터의 첫번째 줄에는 '목차' 내용을 쓰고, 두번째 줄부터 '실제 내용'를 써서 주고 받겠다는 규칙 같은 것. HTTP는 OSI 7계층의 애플리케이션 계층 프로토콜이다. 브라우저와 웹서버는 HTTP 프로토콜을 통해 데이터를 텍스트로 주고 받는다. 서버는 200,400,404 등의 응답을 전송하고, 일반적으로 사용자에게 보이지 않는다. HTTP는 Stateless이다. Stateless란 말 그대로 state(상태)를 저장하지 않는다는 것. 각각의 요청/응답은 독립적인 요청/응답이다. 여러 요청과 응답의 진행과정/데이터가 필요할때는 쿠키나 세션 ..