내가 까먹을까봐 만든 블로그

전체 글

Computer Science/Software Engineering

[QA 전략] CI/CD(Continuous Integration/Continuous Deployment)

CI/CD(Continuous Integration/Continuous Deployment)란 지속적 통합(Continuous integration, CI)과 지속적 제공(Continuous delivery, CD)를 뜻한다. 애플리케이션 개발팀이 더 자주 그리고 안정적으로 코드 변경을 제공하기 위해 사용하는 문화와 운영 원칙, 일련의 작업 방식으로 구성된다. 다시 말해 git에 코드를 올리는 것만으로도 누군가가 빌드와 테스트, 배포까지 해주어 코드를 수정하고 빌드와 테스트를 하고 배포까지 수행하는 시간을 단축시키고 개발에 더 많은 시간을 투자할 수 있도록 하기위해 생겨난 방식이다. DevOps와 같은 것처럼 보이지만 확실히 구별하자면 DevOps는 Development(개발+테스트) + Operatio..

Computer Science/Software Engineering

[QA 전략] 데브옵스(DevOps)

DevOps DevOps는 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 관행, 도구 및 문화적 철학이다. 팀 지원, 팀 간 커뮤니케이션 및 공동 작업, 기술 자동화가 가장 중요한 요소라 볼 수 있다. 이는 일반적으로 회사 개발팀의 개발자들이 어떠한 프로젝트를 수행하고 개발을 완료하면 프로젝트가 끝나는 것이 아니라 운영팀을 통해 빌드, 테스트, 배포까지 완료되어야 하는 구조에서 나오게 된 개발 방법론이다. 하나의 작업을 완료하기 위해 두 팀간의 협업이 필요한 기존 구조는 서로의 입장을 잘 이해하고 배려해주는 이상적인 상황만 존재한다면 좋겠지만 현실에선 그러기 쉽지 않다. 개발자들은 계속해서 새로운 기술들을 도입하고 싶어하지만, 운영팀은 해당 프로젝트의 안정성에 가장 초점을 둔다..

Computer Science/Software Engineering

[QA 전략] [Flutter] File Structure

PC의 보급이 빨라지고 스마트 폰을 많은 사람들이 소유하게 되며 보다 쉽게 사람들은 파일들을 정리할 기회가 생기게 되었다. 옛날 2G 핸드폰은 주어진 구조 및 GUI 환경에서 여러 기능들을 수행하였지만 지금은 좀 더 커스터마이징 하기 간편한 구조가 되었다. 예를 들어 여러 위젯들을 이용해 바탕화면을 꾸미거나 자신만의 디렉토리를 만들어 여러 응용 프로그램들을 하나로 묶어 관리한다. 하지만 A라는 사람의 핸드폰을 B가 잠깐 사용한다면 어디에 무슨 앱이 있는지 또는 어떤 파일을 찾을 때 한 번에 찾는 건 어려울 것이다. 소스 코드도 마찬가지이다. 타인의 네이밍 규칙과 여러가지 의도를 한 눈에 파악하는 것은 매우 힘들다. 기존 레거시 코드를 유지보수 하거나 협업을 하게된다면 더더욱 정형화된 방식 또는 약속된 규..

Computer Science/Software Engineering

[QA 전략] 관심사의 분리(separation of concerns, SoC)

개발의 편의 및 효율성을 위한 여러 가지 디자인 패턴과 형상 관리 기법들이 있다. 하지만 개발 중 가장 먼저 눈에 들어오고 직접적으로 가장 자주 보게 되는 것은 본인의 현재 개발 중인 디렉토리 일 것이다. 모두 각자 자신만의 정리 방식과 파일 분할 기준이 있을 것이다. 하지만 이 과정을 좀 더 정형화하여 정리하고자 할 때 아래 개념들이 도움이 될 수 있다. 관심사의 분리(separation of concerns, SoC) 이 관심사(concerns)라는 것은 어떻게 보면 추상적일 수 있다. 하지만 의미는 명확하다. 가장 낮은 레벨(실제 프로그래밍 코드)에서 SoC는 긴 복잡한 함수를 쓰지 말라고 이야기하고는 한다. 이는 함수의 크기가 커지기 시작하면 함수가 너무 많은 작업을 처리하게 되기 때문이다. 결국..

Languages/Dart(Flutter)

[Flutter Error] Google Social Login 에러 - PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)

PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null) Flutter를 이용해 Android에서 Google 소셜 로그인 기능을 구현할 때 이 에러가 발생하게 되는데, 이미 이 에러를 띄웠을 때는 소셜 로그인을 이용하여 구글 로그인을 위한 API 요청은 실행이 되었을 것으로 생각된다. 아마도 대부분은 아이디와 비밀번호를 정상적으로 입력한 후 로그인을 위한 요청을 보냈을 때 이 에러를 반환한다. 일반적으로 인증서와 관련된 문제가 발생했을 때 아래 에러가 발생한다. 해당 에러가 발생하기 전에 놓친 부분들은 여러가지가 있겠지만 직접 경험해본 케이스는 아래와 같다. Firebase에 디버그..

Languages/Dart(Flutter)

[Flutter] 앱 서명 키 생성과 Debug Key, Release Key 생성 및 Google Firebase 키 등록 - Android

소셜 로그인 기능을 구현하거나 Firebase를 사용하는 경우 키를 생성해야 하는 경우가 있다. 또한 앱을 제작하고 구글 플레이 콘솔이나 애플 앱스토어에 등록하기 위해서는 앱 서명이 필수적이다. ios 같은 경우 맥에서 프로젝트를 진행하면 xcode가 일정 부분 해결해주지만 Android는 직접 앱 서명을 제작하고 등록해주어야 한다. 처음 앱 제작을 하면 갖가지 키들이 나오고 서명이 어쩌고 하는 말들이 막연하게 느껴져 공포스러울 수 있다. 아래 과정들을 천천히 따라 해 보면 조금 해소될 수 있기를 바란다. 순서는 아래와 같다. 자바 설치 키를 저장할 폴더로 이동 키 생성 KEY 확인 KEY 등록 google-services.json 1. 자바 설치 우선 java가 설치되어 있어야 한다. java11 버전..

AlienCoder
외부 저장소
loading